home *** CD-ROM | disk | FTP | other *** search
/ Kit PC World De Ampliacion De Windows 95 / Kit PC World de ampliacion de Windows 95.iso / clarion / 3rdparty / tools / toolcrft / pbctrl.tpw < prev    next >
Encoding:
Text File  |  1995-10-23  |  97.5 KB  |  1,892 lines

  1. #!---------------------------------------------------------!
  2. #!                                                         !
  3. #! Copyright 1994, 1995 ToolCraft Development Corporation  !
  4. #!                                                         !
  5. #!                  ALL RIGHTS RESERVED                    !
  6. #!                                                         !
  7. #!---------------------------------------------------------!
  8. #!
  9. #!
  10. #!=============================================================================!
  11. #!                                                                             !
  12. #! Page/Loaded List Box Control                                                !
  13. #!                                                                             !
  14. #!=============================================================================!
  15. #CONTROL(BrowseBox,'Browse List Box'),PRIMARY('PowerBrowse Control'),REQ(PowerBrowseLibrary(ToolCraft)),DESCRIPTION('PowerBrowse on ' & %Primary),MULTI
  16.      CONTROLS
  17.        LIST,AT(,,100,50),MSG('Browsing Records'),ALRT(CtrlEnter),ALRT(InsertKey),ALRT(DeleteKey),USE(?List),IMM,FROM(BRWQ)
  18.      END
  19.  
  20. #BUTTON('Browse Box Behavior'),AT(10,,180)
  21.   #SHEET
  22.     #TAB('C&onfiguration'),HLP('~PBBrowseBoxConfigurationTab')
  23.       #PROMPT('Use &Multiple Display Orders',CHECK),%UsingMultiDisplay,AT(10,30,105)
  24.       #PROMPT('Use &In-Line Data Entry',CHECK),%UsingInLineEntry,AT(10,,85)
  25.       #PROMPT('Use &View Structure',CHECK),%UsingViewStructure,AT(10,,105)
  26.       #PROMPT('Double Click &Selects Record On Lookup',CHECK),%EnableSelectRequests,DEFAULT(1),AT(10,,145)
  27.       #PROMPT('Enable "Hot" &Display Fields',CHECK),%HotDisplay,AT(10,,105)
  28.       #DISPLAY('')
  29.       #PREPARE
  30.         #DECLARE(%SearchFieldRequired)
  31.         #CLEAR(%SearchFieldRequired)
  32.         #IF(%UsingMultiDisplay)
  33.           #FOR(%AltFormats),WHERE(%AltLocatorType = 'Entry' OR %AltLocatorTYpe = 'Both' OR %AltLocatorType = 'Incremental')
  34.             #SET(%SearchFieldRequired,1)
  35.           #ENDFOR
  36.         #ELSIF(%LocatorType = 'Entry' OR %LocatorTYpe = 'Both' OR %LocatorType = 'Incremental')
  37.           #SET(%SearchFieldRequired,1)
  38.         #ENDIF
  39.       #ENDPREPARE
  40.       #ENABLE(%SearchFieldRequired),CLEAR
  41.         #PROMPT('Search Input Field:',FROM(%Control,%ControlType = 'ENTRY' AND SUB(%ControlTemplate,1,11,) = 'SearchEntry' AND INSTRING('(ToolCraft)',%ControlTemplate,1,1))),%LocatorControl
  42.         #VALIDATE(%LocatorControl,'You Must Select a Search Input Field')
  43.       #ENDENABLE
  44.       #DISPLAY('')
  45.       #PROMPT('Update Procedure:',PROCEDURE),%UpdateProcedure
  46.       #DISPLAY('')
  47.       #PROMPT('List Box &Relationship:',DROP('None|Parent|Child|Both')),%RelationToListBoxes,DEFAULT('None')
  48.       #PREPARE
  49.         #IF(%RelationToListBoxes = 'None' OR %RelationToListBoxes = 'Parent')
  50.           #CLEAR(%ParentListControl)
  51.         #ENDIF
  52.       #ENDPREPARE
  53.       #BOXED,WHERE(%RelationToListBoxes = 'Child' OR %RelationToListBoxes = 'Both')
  54.         #PROMPT('Name of Parent List Box:',FROM(%Control,%ControlTemplate = 'BrowseBox(ToolCraft)' AND %ControlInstance <> %ActiveTemplateInstance)),%ParentListControl,AT(97,148,87,10),PROMPTAT(10,148,87,10)
  55.         #VALIDATE(%ParentListControl,'You Must Select a Parent List Box')
  56.       #ENDBOXED
  57.     #ENDTAB
  58.     #TAB('&Display Setup'),WHERE(NOT %UsingMultiDisplay),HLP('~PBBrowseBoxDisplaySetupTab')
  59.       #PROMPT('Key Display &Order:',DROP('Normal|Reverse')),%KeyDisplayOrder,DEFAULT('Normal'),AT(,30),PROMPTAT(,30)
  60.       #PROMPT('&Locator:',DROP('None|Step|Entry|Both|Incremental')),%LocatorType,DEFAULT('Step'),AT(,45),PROMPTAT(,45)
  61.       #PROMPT('&Record Filter:',@S180),%RecordFilter,AT(,60),PROMPTAT(,60)
  62.       #PROMPT('Range Limit &Field:',COMPONENT(%PrimaryKey)),%RangeField,AT(,75),PROMPTAT(,75)
  63.       #ENABLE(%RangeField)
  64.         #PROMPT('Range Limit &Type:',DROP('Current Value|Single Value|Range of Values|File Relationship')),%RangeLimitType,DEFAULT('Current Value')
  65.         #BOXED,WHERE(%RangeLimitType='Single Value')
  66.           #PROMPT('&Range Limit Value:',@s100),%RangeLimit,AT(97,102,87,10),PROMPTAT(10,102,87,10)
  67.         #ENDBOXED
  68.         #BOXED,WHERE(%RangeLimitType='Range of Values')
  69.           #PROMPT('&Low Limit Value:',@S100),%RangeLow,AT(97,102,87,10),PROMPTAT(10,102,87,10)
  70.           #PROMPT('&High Limit Value:',@S100),%RangeHigh,AT(97,115,87,10),PROMPTAT(10,115,87,10)
  71.         #ENDBOXED
  72.         #BOXED,WHERE(%RangeLimitType='File Relationship')
  73.           #PROMPT('&Related File:',FILE),%RangeFile,AT(97,102,87,10),PROMPTAT(10,102,87,10)
  74.         #ENDBOXED
  75.       #ENDENABLE
  76.       #BUTTON('Vertical Scroll Bar Behavior'),HLP('~PBScrollBarOptions'),AT(,131,176)
  77.         #PROMPT('Scroll Bar Behavior:',DROP('Fixed Thumb|Movable Thumb')),%ScrollBehavior,DEFAULT('Fixed Thumb')
  78.         #ENABLE(%ScrollBehavior='Movable Thumb')
  79.           #PROMPT('Key Distribution:',DROP('Alpha|Last Names|Numeric Range|Date Range|Custom|Other')),%ScrollKeyDistribution,DEFAULT('Alpha')
  80.           #BOXED,WHERE(%ScrollKeyDistribution='Custom')
  81.             #BUTTON('Custom Key Distribution'),MULTI(%CustomKeyDistribution,%KeyDistributionValue),AT(10,35,180),HLP('~PBScrollBehaviorCustomKeyDistribution')
  82.               #PROMPT('Key Value:',@S10),%KeyDistributionValue
  83.             #ENDBUTTON
  84.           #ENDBOXED
  85.           #BOXED,WHERE(%ScrollKeyDistribution='Numeric Range')
  86.             #PROMPT('From Value:',@S20),%KeyArrayFromValue,AT(100,35,90,10),PROMPTAT(10,35,90,10)
  87.             #PROMPT('Thru Value:',@S20),%KeyArrayThruValue,AT(100,47,90,10),PROMPTAT(10,47,90,10)
  88.           #ENDBOXED
  89.           #BOXED,WHERE(%ScrollKeyDistribution='Date Range')
  90.             #PROMPT('From Date:',@D2),%KeyArrayFromDate,AT(100,35,90,10),PROMPTAT(10,35,90,10)
  91.             #PROMPT('Thru Date:',@D2),%KeyArrayThruDate,AT(100,47,90,10),PROMPTAT(10,47,90,10)
  92.           #ENDBOXED
  93.           #BOXED,WHERE(%ScrollKeyDistribution='Other')
  94.             #PROMPT('Key Array Name:',@S40),%KeyArrayName,AT(100,35,90,10),PROMPTAT(10,35,90,10)
  95.           #ENDBOXED
  96.         #ENDENABLE
  97.       #ENDBUTTON
  98.     #ENDTAB
  99.     #TAB('&Display Orders'),WHERE(%UsingMultiDisplay),HLP('~PBBrowseBoxDisplayOrdersTab')
  100.       #BUTTON('Display Setup'),MULTI(%AltFormats,%OrderDescription),AT(,30),HLP('~PBMultiDisplayOrders'),INLINE
  101.         #PROMPT('Order &Description:',@S60),%OrderDescription
  102.         #VALIDATE(%OrderDescription,'You Must Enter an Order Description')
  103.         #PROMPT('&Key Name:',KEY),%OrderKey
  104.         #VALIDATE(%OrderKey,'You Must Select a Key Name')
  105.         #PROMPT('Key Display &Order:',DROP('Normal|Reverse')),%AltKeyDisplayOrder,DEFAULT('Normal')
  106.         #PROMPT('',CHECK),%UseAltListBox,PROMPTAT(17,46,0,0),AT(10,46,8)
  107.         #ENABLE(%UseAltListBox),CLEAR
  108.         #PROMPT('&Alternate List &Format:',FROM(%Control,%ControlTemplate = 'AlternateListFormat(ToolCraft)')),%AltListBox,PROMPTAT(22,46,75),AT(100,46)
  109.         #VALIDATE(%AltListBox,'You Must Select an Alternate List Format Control')
  110.         #ENDENABLE
  111.         #DISPLAY(''),AT(,54)
  112.         #PROMPT('&Locator:',DROP('None|Step|Entry|Both|Incremental')),%AltLocatorType,DEFAULT('Step')
  113.         #ENABLE(%AltLocatorType = 'Entry' OR %AltLocatorType = 'Both' OR %AltLocatorType = 'Incremental')
  114.           #PROMPT('Search Field &Picture:',@S30),%AltSearchEntryPicture
  115.           #VALIDATE(%AltSearchEntryPicture,'You Must Enter a Picture for the Search Field')
  116.         #ENDENABLE
  117.         #DISPLAY(''),AT(,84)
  118.         #PROMPT('&Record Filter:',@S180),%AltRecordFilter
  119.         #PROMPT('Range Limit &Field:',COMPONENT(%OrderKey)),%AltRangeField
  120.         #ENABLE(%AltRangeField)
  121.           #PROMPT('Range Limit &Type:',DROP('Current Value|Single Value|Range of Values|File Relationship')),%AltRangeLimitType,DEFAULT('Current Value')
  122.           #BOXED,WHERE(%AltRangeLimitType='Single Value')
  123.             #PROMPT('Range Limit Value:',@s100),%AltRangeLimit,AT(100,134,90,10),PROMPTAT(10,134,90,10)
  124.           #ENDBOXED
  125.           #BOXED,WHERE(%AltRangeLimitType='Range of Values')
  126.             #PROMPT('Low Limit Value:',@S100),%AltRangeLow,AT(100,134,90,10),PROMPTAT(10,134,90,10)
  127.             #PROMPT('High Limit Value:',@S100),%AltRangeHigh,AT(100,147,90,10),PROMPTAT(10,147,90,10)
  128.           #ENDBOXED
  129.           #BOXED,WHERE(%AltRangeLimitType='File Relationship')
  130.             #PROMPT('Related File:',FILE),%AltRangeFile,AT(100,134,90,10),PROMPTAT(10,134,90,10)
  131.           #ENDBOXED
  132.         #ENDENABLE
  133.         #BUTTON('Vertical Scroll Bar Behavior'),HLP('~PBScrollBarOptions'),AT(,164,180)
  134.           #PROMPT('Scroll Bar Behavior:',DROP('Fixed Thumb|Movable Thumb')),%AltScrollBehavior,DEFAULT('Fixed Thumb')
  135.           #ENABLE(%AltScrollBehavior='Movable Thumb')
  136.             #PROMPT('Key Distribution:',DROP('Alpha|Last Names|Numeric Range|Date Range|Custom|Other')),%AltScrollKeyDistribution,DEFAULT('Alpha')
  137.             #BOXED,WHERE(%AltScrollKeyDistribution='Custom')
  138.               #BUTTON('Custom Key Distribution'),MULTI(%AltCustomKeyDistribution,%AltKeyDistributionValue),AT(10,35,180),HLP('~PBScrollBehaviorCustomKeyDistribution')
  139.                 #PROMPT('Key Value:',@S10),%AltKeyDistributionValue
  140.               #ENDBUTTON
  141.             #ENDBOXED
  142.             #BOXED,WHERE(%AltScrollKeyDistribution='Numeric Range')
  143.               #PROMPT('From Value:',@S20),%AltKeyArrayFromValue,AT(100,35,90,10),PROMPTAT(10,35,90,10)
  144.               #PROMPT('Thru Value:',@S20),%AltKeyArrayThruValue,AT(100,47,90,10),PROMPTAT(10,47,90,10)
  145.             #ENDBOXED
  146.             #BOXED,WHERE(%AltScrollKeyDistribution='Date Range')
  147.               #PROMPT('From Date:',@D2),%AltKeyArrayFromDate,AT(100,35,90,10),PROMPTAT(10,35,90,10)
  148.               #PROMPT('Thru Date:',@D2),%AltKeyArrayThruDate,AT(100,47,90,10),PROMPTAT(10,47,90,10)
  149.             #ENDBOXED
  150.             #BOXED,WHERE(%AltScrollKeyDistribution='Other')
  151.               #PROMPT('Key Array Name:',@S40),%AltKeyArrayName,AT(100,35,90,10),PROMPTAT(10,35,90,10)
  152.             #ENDBOXED
  153.           #ENDENABLE
  154.         #ENDBUTTON
  155.       #ENDBUTTON
  156.       #PROMPT('Change Order Control:',FROM(%Control,%ControlType <> 'PROMPT' AND %ControlType <> 'TAB' AND SUB(%ControlTemplate,1,5) = 'Order' AND INSTRING('(ToolCraft)',%ControlTemplate,1,1))),%ChangeOrderControl,AT(,140),PROMPTAT(,140)
  157.       #VALIDATE(%ChangeOrderControl,'You Must Select A Change Order Control')
  158.     #ENDTAB
  159.     #TAB('In-Line &Fields'),WHERE(NOT %UsingInLineEntry),HLP('~PBBrowseBoxInLineFieldsTab')
  160.       #DISPLAY('In-Line editing is not enabled.  To use in-line editing'),AT(,30)
  161.       #DISPLAY('you must first check the "Use In-Line Data Entry" option')
  162.       #DISPLAY('from the Configuration properties page.  After you')
  163.       #DISPLAY('complete this step you a will be able to setup in-line')
  164.       #DISPLAY('editing from this page.')
  165.     #ENDTAB
  166.     #TAB('In-Line &Fields'),WHERE(%UsingInLineEntry),HLP('~PBBrowseBoxInLineFieldsTab')
  167.       #BUTTON('In-Line Fields'),MULTI(%InLineInstance,%InLineField),AT(,30),HLP('~PBInLineEntryFields'),INLINE
  168.         #PROMPT('&Field Name:',FIELD),%InLineField,PROMPTAT(5,6,45),AT(55,6)
  169.         #VALIDATE(%InLineField,'You Must Enter a Field Name')
  170.         #PROMPT('Field &Type:',DROP('Entry|Spin Box|Drop List|Drop Combo')),%InLineFieldType,DEFAULT('Entry'),PROMPTAT(5,18,45),AT(55,18)
  171.         #VALIDATE(%InLineFieldType,'You Must Select a Field Type')
  172.         #PROMPT('Initial &Value:',@S255),%InLineInitialValue,PROMPTAT(5,30,45),AT(55,30)
  173.         #PROMPT('P&icture:',@S30),%InLinePicture,PROMPTAT(5,45,45),AT(55,45)
  174.         #PROMPT('&Justification:',DROP('None|Left Justified|Right Justified|Centered|Decimal')),%InLinePropJustification,DEFAULT('None'),PROMPTAT(5,62,45),AT(55,62,70)
  175.         #PROMPT('&Offset:',@N3),%InLinePropOffset,PROMPTAT(150,62,24),AT(175,62,20)
  176.         #PROMPT('He&lp ID:',@S160),%InLinePropHlp,PROMPTAT(5,74,45),AT(55,74,140)
  177.         #PROMPT('Messa&ge:',@S255),%InLinePropMsg,PROMPTAT(5,86,45),AT(55,86,140)
  178.         #BOXED('Case'),WHERE(%InLineFieldType='Entry' OR %InLineFieldType='Spin Box'),AT(5,100,60,50)
  179.           #PROMPT('',OPTION),%InLinePropCase,DEFAULT('Norm')
  180.           #PROMPT('&Norm',RADIO),PROMPTAT(15,111,45),AT(10,111,50)
  181.           #PROMPT('Capitali&ze',RADIO),PROMPTAT(15,124,45),AT(10,124,50)
  182.           #PROMPT('Upp&er Case',RADIO),PROMPTAT(15,137,45),AT(10,137,50)
  183.         #ENDBOXED
  184.         #BOXED('Options'),WHERE(%InLineFieldType='Entry'),AT(70,100,105,50)
  185.         #ENDBOXED
  186.         #BOXED('Options'),WHERE(%InLineFieldType='Spin Box'),AT(70,100,55,50)
  187.         #ENDBOXED
  188.         #BOXED,WHERE(%InLineFieldType='Entry' OR %InLineFieldType='Spin Box')
  189.           #PROMPT('&Required',CHECK),%InLinePropReq,PROMPTAT(80,111,45),AT(75,111,45)
  190.           #PROMPT('I&mmediate',CHECK),%InLinePropImm,PROMPTAT(80,124,45),AT(75,124,45)
  191.           #PROMPT('Read Onl&y',CHECK),%InLinePropReadOnly,PROMPTAT(80,137,45),AT(75,137,45)
  192.         #ENDBOXED
  193.         #BOXED,WHERE(%InLineFieldType='Entry')
  194.           #PROMPT('Pass&word',CHECK),%InLinePropPassword,PROMPTAT(130,111,45),AT(125,111,45)
  195.           #PROMPT('&Skip',CHECK),%InLinePropSkip,PROMPTAT(130,124,30),AT(125,124,30)
  196.         #ENDBOXED
  197.         #BOXED('Entry Mode'),WHERE(%InLineFieldType='Entry'),AT(180,100,65,50)
  198.           #PROMPT('',OPTION),%InLinePropEntryMode,DEFAULT('As is')
  199.           #PROMPT('A&s is',RADIO),PROMPTAT(15,111,45),AT(10,111,35)       #!PROMPTAT(190,111,45),AT(185,111,35)
  200.           #PROMPT('Inser&t',RADIO),PROMPTAT(15,124,45),AT(10,124,40)      #!PROMPTAT(190,124,45),AT(185,124,40)
  201.           #PROMPT('O&verwrite',RADIO),PROMPTAT(15,137,45),AT(10,137,45)   #!PROMPTAT(190,137,45),AT(185,137,45)
  202.         #ENDBOXED
  203.         #BOXED('Range'),WHERE(%InLineFieldType='Spin Box'),AT(130,100,65,50)
  204.           #PROMPT('&Upper:',@S30),%InLinePropRangeHigh,PROMPTAT(10,111,25),AT(35,111,30)  #!PROMPTAT(135,111,25),AT(160,111,30)
  205.           #PROMPT('Lo&wer:',@S30),%InLinePropRangeLow,PROMPTAT(10,124,25),AT(35,124,30)   #!PROMPTAT(135,124,25),AT(160,124,30)
  206.           #PROMPT('S&tep:',@S30),%InLinePropStep,PROMPTAT(10,137,25),AT(35,137,30)        #!PROMPTAT(135,137,25),AT(160,137,30)
  207.         #ENDBOXED
  208.         #BOXED('Scroll bars'),WHERE(%InLineFieldType='Drop List' OR %InLineFieldType='Drop Combo'),AT(5,100,52,50)
  209.           #PROMPT('Hori&zontal',CHECK),%InLinePropHScroll,PROMPTAT(15,111,45),AT(10,111,45)
  210.           #PROMPT('&Vertical',CHECK),%InLinePropVScroll,PROMPTAT(15,124,45),AT(10,124,40)
  211.         #ENDBOXED
  212.         #BOXED('List Box Setup'),WHERE(%InLineFieldType='Drop List' OR %InLineFieldType='Drop Combo'),AT(62,100,133,50)
  213.           #PROMPT('&Drop:',@N3),%InLinePropDrop,DEFAULT(4),PROMPTAT(10,111,22),AT(38,111,20)    #!PROMPTAT(67,111,22),AT(95,111,20)
  214.           #VALIDATE(%InLinePropDrop,'You Must Enter a Drop Value')
  215.           #PROMPT('F&rom:',@S255),%InLinePropFrom,PROMPTAT(10,124,25),AT(38,124,95)             #!PROMPTAT(67,124,25),AT(95,124,95)
  216.           #VALIDATE(%InLinePropFrom,'You Must Enter a String or Queue Name to Build List From')
  217.           #PROMPT('&Format:',FORMAT),%InLinePropFormat,PROMPTAT(10,137,25),AT(38,137,95)        #!PROMPTAT(67,137,25),AT(95,137,95)
  218.           #VALIDATE(%InLinePropFormat,'You Must Define the List Box Format')
  219.         #ENDBOXED
  220.       #ENDBUTTON
  221.       #BUTTON('In-Line Options'),HLP('~PBInLineEntryOptions'),AT(,140,176)
  222.         #BOXED('Type of Updates Allowed')
  223.           #PROMPT('Inserts',CHECK),%InLineInsertAllowed,DEFAULT(1),AT(10,17,35)
  224.           #PROMPT('Changes',CHECK),%InLineChangeAllowed,DEFAULT(1),AT(70,17,40)
  225.           #PROMPT('Deletes',CHECK),%InLineDeleteAllowed,DEFAULT(1),AT(130,17,40)
  226.         #ENDBOXED
  227.         #BOXED('Update Behavior Setup')
  228.           #ENABLE(%InLineInsertAllowed)
  229.             #PROMPT('&Point Bar Location on Insert:',DROP('Top of List|Bottom of List|Current Position')),%InLineInsertMode,DEFAULT('Top of List'),PROMPTAT(,,100),AT(118,,73)
  230.           #ENDENABLE
  231.           #ENABLE(%InLineDeleteAllowed)
  232.             #PROMPT('When Called for &Delete:',DROP('Standard Warning|Automatic Delete')),%InLineActionOnDelete,DEFAULT('Standard Warning'),PROMPTAT(,,100),AT(118,,73)
  233.           #ENDENABLE
  234.         #ENDBOXED
  235.         #BOXED('Key and Button Setup'),AT(,,255)
  236.           #PROMPT('&Cancel Key:',@S20),%InLineAbortKey,DEFAULT('EscKey'),PROMPTAT(10,88,45),AT(55,88,55)
  237.           #PROMPT('',CHECK),%InLineUseAbortButton,PROMPTAT(120,88,0,0),AT(118,88,8)
  238.           #ENABLE(%InLineUseAbortButton)
  239.             #PROMPT('Cancel Button:',FROM(%Control,%ControlType = 'BUTTON')),%InLineAbortButton,PROMPTAT(126,88,50),AT(179,88,75)
  240.             #VALIDATE(%InLineAbortButton,'Must Select A Button')
  241.             #PROMPT('Button Text:',@S50),%InLineAbortButtonText,PROMPTAT(126,102,45),AT(179,102,75)
  242.           #ENDENABLE
  243.           #PROMPT('&Save Key:',@S20),%InLineSaveKey,DEFAULT('CtrlEnter'),PROMPTAT(10,122,45),AT(55,122,55)
  244.           #PROMPT('',CHECK),%InLineUseSaveButton,PROMPTAT(120,122,0,0),AT(118,122,8)
  245.           #ENABLE(%InLineUseSaveButton)
  246.             #PROMPT('Save Button:',FROM(%Control,%ControlType = 'BUTTON')),%InLineSaveButton,PROMPTAT(126,122,45),AT(179,122,75)
  247.             #VALIDATE(%InLineSaveButton,'Must Select A Button')
  248.             #PROMPT('Button Text:',@S50),%InLineSaveButtonText,PROMPTAT(126,136,45),AT(179,136,75)
  249.           #ENDENABLE
  250.           #PROMPT('Enable Batch Entry of Records',CHECK),%InLineUseBatchEntry,PROMPTAT(20,156,110),AT(10,156,110)
  251.           #ENABLE(%InLineUseBatchEntry)
  252.             #PROMPT('Batch Button:',FROM(%Control,%ControlType = 'BUTTON')),%InLineBatchButton,PROMPTAT(126,156,45),AT(179,156,75)
  253.           #ENDENABLE
  254.           #PROMPT('Enable Editing of Next/Previous Records by Column',CHECK),%InLineUseColumnEdit,DEFAULT(0),PROMPTAT(20,176,185),AT(10,176,185)
  255.           #ENABLE(%InLineUseColumnEdit)
  256.             #PROMPT('Next Record Keys:',@S20),%InLineEditNextKey1,DEFAULT('DownKey'),PROMPTAT(18,190,70),AT(100,190,55)
  257.             #PROMPT('Alt Key:',@S20),%InLineEditNextKey2,PROMPTAT(167,190,30),AT(198,190,55)
  258.             #PROMPT('Previous Record Keys:',@S20),%InLineEditPrevKey1,DEFAULT('UpKey'),PROMPTAT(18,204,75),AT(100,204,55)
  259.             #PROMPT('Alt Key:',@S20),%InLineEditPrevKey2,PROMPTAT(167,204,30),AT(198,204,55)
  260.           #ENDENABLE
  261.         #ENDBOXED
  262.       #ENDBUTTON
  263.     #ENDTAB
  264.     #TAB('&View'),WHERE(NOT %UsingViewStructure),HLP('~PBBrowseBoxViewTab')
  265.       #DISPLAY('Use of a view structure for this browse has not been'),AT(,30)
  266.       #DISPLAY('enabled. To have the browse use a view you must first')
  267.       #DISPLAY('check the "Use View Structure" option from the')
  268.       #DISPLAY('Configuration properties page.  After you complete this')
  269.       #DISPLAY('step you will be able to change view properties from')
  270.       #DISPLAY('this page.')
  271.     #ENDTAB
  272.     #TAB('&View'),WHERE(%UsingViewStructure),HLP('~PBBrowseBoxViewTab')
  273.        #PROMPT('&Filter:',@S180),%ViewStructureFilter,PROMPTAT(10,30,25),AT(30,30,153)
  274.        #DISPLAY('"Hot" Fields:'),AT(,45)
  275.        #BUTTON('"Hot" Fields'),MULTI(%HotFields,%HotField & SUB(' (BIND)',1,7*%HotFieldBound)),HLP('~PBViewHotFields'),INLINE,AT(,,,85)
  276.          #PROMPT('Hot Field:',FIELD),%HotField
  277.          #VALIDATE(%HotField,'You Must Select a Hot Field')
  278.          #PROMPT('BIND Field:',CHECK),%HotFieldBound
  279.        #ENDBUTTON
  280.     #ENDTAB
  281.     #PREPARE
  282.       #FIND(%ControlInstance,%ActiveTemplateInstance,%Control)
  283.     #ENDPREPARE
  284.     #TAB('&Colors'),WHERE(NOT %ControlHasColor),HLP('~PBBrowseBoxColorsTab')
  285.       #DISPLAY('No color options were checked in the list box formatter.'),AT(,30)
  286.       #DISPLAY('To enable colors in a list box you must first check the')
  287.       #DISPLAY('color option for each field that will use coloring.')
  288.       #DISPLAY('After you complete this step you a will be able to set the')
  289.       #DISPLAY('color properties for each field from this page.')
  290.     #ENDTAB
  291.     #TAB('&Colors'),WHERE(%ControlHasColor = %True),HLP('~PBBrowseBoxColorsTab')
  292.       #PREPARE
  293.         #FIND(%ControlInstance,%ActiveTemplateInstance,%Control)
  294.       #ENDPREPARE
  295.       #BUTTON('Customize Colors'),FROM(%ControlField,%ControlField),AT(,30),HLP('~PBCustomizeColors'),INLINE,WHERE(%ControlFieldHasColor)
  296.         #PREPARE
  297.           #FIND(%ControlInstance,%ActiveTemplateInstance,%Control)
  298.         #ENDPREPARE
  299.         #BOXED('Default Colors')
  300.           #PROMPT('&Foreground Normal:',COLOR),%ControlFieldForegroundNormal,DEFAULT(-1)
  301.           #PROMPT('&Background Normal:',COLOR),%ControlFieldBackgroundNormal,DEFAULT(-1)
  302.           #PROMPT('&Foreground Selected:',COLOR),%ControlFieldForegroundSelected,DEFAULT(-1)
  303.           #PROMPT('&Background Selected:',COLOR),%ControlFieldBackgroundSelected,DEFAULT(-1)
  304.         #ENDBOXED
  305.         #BOXED('Conditional Color Assignments')
  306.           #BUTTON('Conditional Color Assignments'),MULTI(%ConditionalColors,%ColorCondition),INLINE,HLP('~PBConditionalColors')
  307.             #PROMPT('&Condition:',@S255),%ColorCondition
  308.             #PROMPT('&Foreground Normal:',COLOR),%ConditionalControlFieldForegroundNormal,DEFAULT(-1)
  309.             #PROMPT('&Background Normal:',COLOR),%ConditionalControlFieldBackgroundNormal,DEFAULT(-1)
  310.             #PROMPT('&Foreground Selected:',COLOR),%ConditionalControlFieldForegroundSelected,DEFAULT(-1)
  311.             #PROMPT('&Background Selected:',COLOR),%ConditionalControlFieldBackgroundSelected,DEFAULT(-1)
  312.           #ENDBUTTON
  313.         #ENDBOXED
  314.         #ENABLE(%UsingMultiDisplay)
  315.           #PROMPT('Apply Color Settings for this Field to ALL Display Orders',CHECK),%StandardColorScheme,DEFAULT(0),AT(5,,185)
  316.         #ENDENABLE
  317.       #ENDBUTTON
  318.     #ENDTAB
  319.     #PREPARE
  320.       #FIND(%ControlInstance,%ActiveTemplateInstance,%Control)
  321.     #ENDPREPARE
  322.     #TAB('&Icons'),WHERE(NOT %ControlHasIcon),HLP('~PBBrowseBoxIconsTab')
  323.       #DISPLAY('No icons fields were defined in the list box formatter.'),AT(,30)
  324.       #DISPLAY('To define an icon in a list box you must first check the')
  325.       #DISPLAY('icon option for each field that will display an icon.')
  326.       #DISPLAY('After you complete this step you a will be able to set the')
  327.       #DISPLAY('icon properties for each field from this page.')
  328.     #ENDTAB
  329.     #TAB('&Icons'),WHERE(%ControlHasIcon = %True),HLP('~PBBrowseBoxIconsTab')
  330.       #PREPARE
  331.         #FIND(%ControlInstance,%ActiveTemplateInstance,%Control)
  332.       #ENDPREPARE
  333.       #BUTTON('&Customize Icons'),FROM(%ControlField,%ControlField & ' - ' & %ControlFieldIcon),AT(,30),HLP('~PBCustomizeIcons'),INLINE,WHERE(%ControlFieldHasIcon)
  334.         #PREPARE
  335.           #FIND(%ControlInstance,%ActiveTemplateInstance,%Control)
  336.         #ENDPREPARE
  337.         #BOXED('Default Icon')
  338.           #PROMPT('Icon:',@S40),%ControlFieldIcon
  339.         #ENDBOXED
  340.         #BOXED('Conditional Icon Usage')
  341.           #BUTTON('&Conditional Icon Usage'),MULTI(%ConditionalIcons,%IconCondition),INLINE,HLP('~PBConditionalIcons')
  342.             #PROMPT('&Condition:',@S255),%IconCondition
  343.             #PROMPT('Icon:',@S40),%ConditionalControlFieldIcon
  344.           #ENDBUTTON
  345.         #ENDBOXED
  346.         #ENABLE(%UsingMultiDisplay)
  347.           #PROMPT('Apply Icon Settings for this Field to ALL Display Orders',CHECK),%StandardIconScheme,DEFAULT(0),AT(5,,185)
  348.         #ENDENABLE
  349.       #ENDBUTTON
  350.     #ENDTAB
  351.     #TAB('&Totals'),HLP('~PBBrowseBoxTotalsTab')
  352.       #BUTTON('Totals'),MULTI(%BrowseTotals,%BrowseTotalTarget & ' (' & %BrowseTotalType & ')'),AT(,30),HLP('~PBBrowseTotals'),INLINE
  353.         #PROMPT('Total Target Field:',FIELD),%BrowseTotalTarget,REQ
  354.         #PROMPT('Total Type:',DROP('Count|Sum|Average')),%BrowseTotalType
  355.         #ENABLE(%BrowseTotalType <> 'Count'),CLEAR
  356.           #PROMPT('Field To Total:',FIELD),%BrowseTotalField,REQ
  357.         #ENDENABLE
  358.         #PROMPT('Total Based On:',DROP('Each Record Read|Specified Condition')),%BrowseTotalBasedOn
  359.         #ENABLE(%BrowseTotalBasedOn = 'Specified Condition'),CLEAR
  360.           #PROMPT('Total Condition:',@S255),%BrowseTotalCondition,REQ
  361.         #ENDENABLE
  362.       #ENDBUTTON
  363.       #ENABLE(ITEMS(%BrowseTotals))
  364.         #PROMPT('Display Hour &Glass while Totaling',CHECK),%DisplayHourGlassOnTotals,AT(10,140,125),PROMPTAT(,140)
  365.       #ENDENABLE
  366.     #ENDTAB
  367.   #ENDSHEET
  368. #ENDBUTTON
  369. #CLASS('Format Browse','Format a variable in the ' & %ActiveTemplateInstanceDescription)
  370. #!
  371. #!
  372. #!
  373. #!-------------------------------------------------------------------------
  374. #ATSTART
  375. #DECLARE(%UsingDropCombo)
  376. #SET(%UsingDropCombo,0)
  377. #DECLARE(%CmtPos)
  378. #SET(%CmtPos,65)
  379. #COMMENT(%CmtPos)
  380. #INSERT(%FileControlInitialize(Clarion))
  381. #INSERT(%BrowseBoxControlInitialize)
  382. #INSERT(%BuildQueueFieldList)
  383. #INSERT(%SetupLocator)
  384. #INSERT(%SetupSingleDisplay)
  385. #INSERT(%SetupMultiDisplay)
  386. #INSERT(%SetupInLineFieldOrders)
  387. #INSERT(%BuildColorConstruct)
  388. #INSERT(%BuildIconConstruct)
  389. #ENDAT
  390. #!-------------------------------------------------------------------------
  391. #AT(%CustomGlobalDeclarations)
  392.   #INSERT(%FileControlSetFlags(Clarion))
  393. #ENDAT
  394. #!-------------------------------------------------------------------------
  395. #AT(%SetIconListProperties),WHERE(%ListBoxHasIcon)
  396. #INSERT(%AddAllIconsForControl)
  397. #ENDAT
  398. #!-------------------------------------------------------------------------
  399. #AT(%SaveFieldsForRangeFilter)
  400. #INSERT(%GenerateSaveVars)
  401. #ENDAT
  402. #!-------------------------------------------------------------------------
  403. #AT(%ProcedureSetup)
  404. #INSERT(%InitializeSaveVars)
  405. #ENDAT
  406. #!-------------------------------------------------------------------------
  407. #AT(%HideListBoxControlsBeforeAccept),WHERE(NOT %ToolCraftNoDelayedDisplay)
  408. HIDE(%ListControl)                                          #<!Delay Display of List Box
  409. #ENDAT
  410. #!-------------------------------------------------------------------------
  411. #AT(%PostWindowEventHandling,'OpenWindow'),WHERE(NOT %ToolCraftNoDelayedDisplay)
  412. UNHIDE(%ListControl)                                        #<!Unhide Filled List Box
  413. #ENDAT
  414. #!-------------------------------------------------------------------------
  415. #AT(%RedisplayChildListBoxes,%ParentListControl)
  416.   #IF(%RelationToListBoxes = 'Child' OR %RelationToListBoxes = 'Both')
  417. IF TC_PROP:BRW(%ListControl,TCPROP:Initialized)             #<!  If Browse is Initialized
  418.   TC_PROP:BRW(%ListControl,TCPROP:Action,0)                 #<!    Tell Browse to Redisplay
  419.     #IF(%RelationToListBoxes = 'Child')
  420.   TC_PROP:BRW(%ListControl,TCPROP:DontSelect,1)             #<!    Tell Browse not to Select the List Box
  421.     #ENDIF
  422. END                                                         #<!  End If
  423.   #IF(%UsingBrowseTotals)
  424. DO BrowseInitTotals:%BrwLbl                                 #<!    Initialize Totals for the Browse
  425.   #ENDIF
  426. DO BrowseList:%BrwLbl                                       #<!  Call Browse Routine for the List Box
  427.   #ENDIF
  428.   #IF(%RelationToListBoxes = 'Both')
  429. SELECT(%ParentListControl)                                  #<!  Reselect Parent List Box
  430.   #ENDIF
  431. #ENDAT
  432. #!-------------------------------------------------------------------------
  433. #AT(%MultiSortOrderDeclarations)
  434. #INSERT(%BuildFormatStrings)
  435.  
  436.   #IF(%UsingMultiDisplay)
  437.     #SET(%ValueConstruct,%SrtPfx & ':SortOrder')
  438. %[20]ValueConstruct BYTE                                    #<!Current Sort Order for the List Box
  439. %[20]SortOrderQueue QUEUE,PRE(%SrtPfx)                      #<!Queue Use to Store Sort Order Info
  440. #SET(%ValueConstruct,'OrderName')
  441. %[22]ValueConstruct STRING(60)                              #<!  Description shown in drop box
  442. #SET(%ValueConstruct,'SearchPicture')
  443. %[22]ValueConstruct STRING(30)                              #<!  Picture Clause for Search Field
  444. #SET(%ValueConstruct,'OrderFormat')
  445. %[22]ValueConstruct STRING(500)                             #<!  Format String for the List Box
  446. %[20]Null END                                               #<!End Queue Declaration
  447.  
  448.   #ENDIF
  449.   #IF(%UsingAltMovableThumb)
  450.     #FOR(%AltFormats),WHERE(%AltScrollBehavior='Movable Thumb')
  451.       #CASE(%AltScrollKeyDistribution)
  452.       #OF('Numeric Range')
  453.         #SELECT(%AltThumbLocatorField,INSTANCE(%AltFormats))
  454.         #IF(%AltKeyArrayThruValue < %AltKeyArrayFromValue)
  455.           #SET(%AltKeyArrayThruValue,%AltKeyArrayFromValue)
  456.         #ENDIF
  457.         #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':KeyValue' & INSTANCE(%AltFormats))
  458. %[20]ValueConstruct LIKE(%AltThumbLocatorField)
  459.         #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':RangeFrom' & INSTANCE(%AltFormats))
  460. %[20]ValueConstruct EQUATE(%AltKeyArrayFromValue)
  461.         #SET(%ValueConstruct,%AltKeyArrayThruValue - %AltKeyArrayFromValue + 1)
  462.         #SET(%ArrayRangeStep,%ValueConstruct / 100)
  463.         #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':RangeStep' & INSTANCE(%AltFormats))
  464. %[20]ValueConstruct EQUATE(%ArrayRangeStep)
  465.  
  466.       #OF('Date Range')
  467.         #SELECT(%AltThumbLocatorField,INSTANCE(%AltFormats))
  468.         #IF(%AltKeyArrayThruDate < %AltKeyArrayFromDate)
  469.           #SET(%AltKeyArrayThruDate,%AltKeyArrayFromDate)
  470.         #ENDIF
  471.         #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':KeyValue' & INSTANCE(%AltFormats))
  472. %[20]ValueConstruct LIKE(%AltThumbLocatorField)
  473.         #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':RangeFrom' & INSTANCE(%AltFormats))
  474. %[20]ValueConstruct EQUATE(%AltKeyArrayFromDate)
  475.         #SET(%ValueConstruct,%AltKeyArrayThruDate - %AltKeyArrayFromDate + 1)
  476.         #SET(%ArrayRangeStep,%ValueConstruct / 100)
  477.         #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':RangeStep' & INSTANCE(%AltFormats))
  478. %[20]ValueConstruct EQUATE(%ArrayRangeStep)
  479.  
  480.       #OF('Custom')
  481.         #CLEAR(%CustomSize)
  482.         #CLEAR(%CustomStrLen)
  483.         #FOR(%AltCustomKeyDistribution)
  484.           #IF(%CustomSize < LEN(CLIP(%AltKeyDistributionValue)))
  485.             #SET(%CustomSize,LEN(CLIP(%AltKeyDistributionValue)))
  486.           #ENDIF
  487.         #ENDFOR
  488.         #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':Custom' & INSTANCE(%AltFormats))
  489. %[20]ValueConstruct STRING('%|
  490.         #FOR(%AltCustomKeyDistribution)
  491.           #IF(%CustomStrLen => 60)
  492. %SnglQuote |
  493.                            &'%|
  494.             #CLEAR(%CustomStrLen)
  495.           #ENDIF
  496.           #SET(%CustomStrLen,%CustomStrLen + %CustomSize)
  497. %[%CustomSize]AltKeyDistributionValue%|
  498.         #ENDFOR
  499. %SnglQuote)
  500.         #SET(%ArrayOverField,'SORT:' & %BrwLbl & ':Custom' & INSTANCE(%AltFormats))
  501.         #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':Custom' & INSTANCE(%AltFormats) & ':Array')
  502.         #SET(%ArrayDimSize,ITEMS(%AltCustomKeyDistribution))
  503. %[20]ValueConstruct STRING(%CustomSize),DIM(%ArrayDimSize),OVER(%ArrayOverField)
  504.  
  505.       #ENDCASE
  506.     #ENDFOR
  507.   #ENDIF
  508. #ENDAT
  509. #!-------------------------------------------------------------------------
  510. #AT(%EnableSaveButtons,%ParentListControl),WHERE(%Control=%ParentListControl AND NOT EXTRACT(%ControlStatement,'DISABLE'))
  511.   #FOR(%Control),WHERE(%Control=%ParentListControl AND NOT EXTRACT(%ControlStatement,'DISABLE'))
  512. ENABLE(%ListControl)                                                #<!    Enable Child List Box
  513.   #ENDFOR
  514.   #FOR(%Control),WHERE(%Control=%ListControl AND NOT EXTRACT(%ControlStatement,'DISABLE'))
  515. #EMBED(%EnableInsertButton,''),%Control,HIDE
  516.   #ENDFOR
  517. #ENDAT
  518. #!-------------------------------------------------------------------------
  519. #AT(%DisableSaveButtons,%ParentListControl),WHERE(%RelationToListBoxes = 'Child' OR %RelationToListBoxes = 'Both')
  520.   #FOR(%Control),WHERE(%Control=%ParentListControl AND NOT EXTRACT(%ControlStatement,'DISABLE'))
  521. DISABLE(%ListControl)                                               #<!    Disable Child List Box
  522.   #ENDFOR
  523.   #FOR(%Control),WHERE(%Control=%ListControl AND NOT EXTRACT(%ControlStatement,'DISABLE'))
  524. #EMBED(%DisableInsertButton,''),%Control,HIDE
  525.   #ENDFOR
  526. #ENDAT
  527. #!-------------------------------------------------------------------------
  528. #AT(%HotListBoxDisplaySection)
  529.   #ADD(%ListBoxControls,%ListControl)
  530.   #SET(%ListBoxNum,%BrwLbl)
  531.   #IF(%RelationToListBoxes = 'Child' OR %RelationToListBoxes = 'Both')
  532.     #ADD(%HotListBoxParent,%ParentListControl)
  533.     #ADD(%HotListBoxChild,%ListControl)
  534.   #ENDIF
  535. #ENDAT
  536. #!-------------------------------------------------------------------------
  537. #AT(%BrowseTotalVariables)
  538.   #IF(%UsingBrowseTotals)
  539.     #FOR(%BrowseTotals)
  540.       #CASE(%BrowseTotalType)
  541.       #OF('Count')
  542.         #SET(%ValueConstruct,%BrowseTotalTarget & ':Cnt')
  543. %[20]ValueConstruct LONG
  544.       #OF('Sum')
  545.         #SET(%ValueConstruct,%BrowseTotalTarget & ':Sum')
  546. %[20]ValueConstruct LIKE(%BrowseTotalTarget)
  547.       #OF('Average')
  548.         #SET(%ValueConstruct,%BrowseTotalTarget & ':Cnt')
  549. %[20]ValueConstruct LONG
  550.         #SET(%ValueConstruct,%BrowseTotalTarget & ':Sum')
  551. %[20]ValueConstruct LIKE(%BrowseTotalTarget)
  552.         #SET(%ValueConstruct,%BrowseTotalTarget & ':Avg')
  553. %[20]ValueConstruct LIKE(%BrowseTotalTarget)
  554.       #ENDCASE
  555.     #ENDFOR
  556.   #ENDIF
  557. #ENDAT
  558. #!-------------------------------------------------------------------------
  559. #AT(%DataSectionBeforeWindow)
  560.   #IF(NOT %UsingMultiDisplay)
  561.     #IF(%ScrollBehavior='Movable Thumb')
  562.       #CASE(%ScrollKeyDistribution)
  563.       #OF('Numeric Range')
  564.         #IF(%KeyArrayThruValue < %KeyArrayFromValue)
  565.           #SET(%KeyArrayThruValue,%KeyArrayFromValue)
  566.         #ENDIF
  567.         #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':KeyValue')
  568. %[20]ValueConstruct LIKE(%ThumbLocatorField)
  569.         #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':RangeFrom')
  570. %[20]ValueConstruct EQUATE(%KeyArrayFromValue)
  571.         #SET(%ValueConstruct,%KeyArrayThruValue - %KeyArrayFromValue + 1)
  572.         #SET(%ArrayRangeStep,%ValueConstruct / 100)
  573.         #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':RangeStep')
  574. %[20]ValueConstruct EQUATE(%ArrayRangeStep)
  575.  
  576.       #OF('Date Range')
  577.         #IF(%KeyArrayThruDate < %KeyArrayFromDate)
  578.           #SET(%KeyArrayThruDate,%KeyArrayFromDate)
  579.         #ENDIF
  580.         #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':KeyValue')
  581. %[20]ValueConstruct LIKE(%ThumbLocatorField)
  582.         #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':RangeFrom')
  583. %[20]ValueConstruct EQUATE(%KeyArrayFromDate)
  584.         #SET(%ValueConstruct,%KeyArrayThruDate - %KeyArrayFromDate + 1)
  585.         #SET(%ArrayRangeStep,%ValueConstruct / 100)
  586.         #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':RangeStep')
  587. %[20]ValueConstruct EQUATE(%ArrayRangeStep)
  588.  
  589.       #OF('Custom')
  590.         #CLEAR(%CustomSize)
  591.         #CLEAR(%CustomStrLen)
  592.         #FOR(%CustomKeyDistribution)
  593.           #IF(%CustomSize < LEN(CLIP(%KeyDistributionValue)))
  594.             #SET(%CustomSize,LEN(CLIP(%KeyDistributionValue)))
  595.           #ENDIF
  596.         #ENDFOR
  597.         #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':Custom')
  598. %[20]ValueConstruct STRING('%|
  599.         #FOR(%CustomKeyDistribution)
  600.           #IF(%CustomStrLen => 60)
  601. %SnglQuote |
  602.                            &'%|
  603.             #CLEAR(%CustomStrLen)
  604.           #ENDIF
  605.           #SET(%CustomStrLen,%CustomStrLen + %CustomSize)
  606. %[%CustomSize]KeyDistributionValue%|
  607.         #ENDFOR
  608. %SnglQuote)
  609.         #SET(%ArrayOverField,'SORT:' & %BrwLbl & ':Custom')
  610.         #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':Custom:Array')
  611.         #SET(%ArrayDimSize,ITEMS(%CustomKeyDistribution))
  612. %[20]ValueConstruct STRING(%CustomSize),DIM(%ArrayDimSize),OVER(%ArrayOverField)
  613.  
  614.       #ENDCASE
  615.     #ENDIF
  616.   #ENDIF
  617. #ENDAT
  618. #!-------------------------------------------------------------------------
  619. #AT(%BrowseQueueDeclaration)
  620. #INSERT(%BuildBrowseBoxQueue)
  621. #IF(%UsingViewStructure)
  622.   #SET(%ValueConstruct,'VIEW:' & %ListQueue)
  623. #INSERT(%ConstructView)
  624. #ENDIF
  625. #IF(%UsingRevKeyOrder)
  626.   #SET(%ValueConstruct,'RevOrder:' & %BrwLbl)
  627. %[20]ValueConstruct BYTE(1)
  628. #ENDIF
  629. #IF(%UsingIncrementalLocator)
  630.   #SET(%ValueConstruct,'LocLen:' & %BrwLbl)
  631. %[20]ValueConstruct BYTE
  632. #ENDIF
  633. #ENDAT
  634. #!-------------------------------------------------------------------------
  635. #AT(%AfterFileOpen),WHERE(%UsingViewStructure)
  636. #FOR(%HotFields),WHERE(%HotFieldBound)
  637. BIND('%HotField',%HotField)
  638. #ENDFOR
  639. #ENDAT
  640. #!-------------------------------------------------------------------------
  641. #AT(%BeforeFileClose),WHERE(%UsingViewStructure)
  642. #FOR(%HotFields),WHERE(%HotFieldBound)
  643. UNBIND('%HotField')
  644. #ENDFOR
  645. CLOSE(VIEW:%ListQueue)
  646. #ENDAT
  647. #!-------------------------------------------------------------------------
  648. #AT(%ProcedureRoutines)
  649. #FIX(%File,%Primary)
  650. #FIX(%Key,%PrimaryKey)
  651. #INSERT(%BrowseListRoutine)
  652. #INSERT(%EntrySearchRoutine)
  653. #INSERT(%StepSearchRoutine)
  654. #INSERT(%IncrementalSearchRoutine)
  655. #INSERT(%SetFieldIconsRoutine)
  656. #INSERT(%SetFieldColorsRoutine)
  657. #INSERT(%LoadSortOrdersRoutine)
  658.   #IF(%UsingBrowseTotals)
  659. #INSERT(%BrowseTotalRoutines)
  660.   #ENDIF
  661. #ENDAT
  662. #!-------------------------------------------------------------------------
  663. #AT(%ControlEventHandling,%InLineBatchButton,'Accepted')
  664.   #IF(%InLineUseBatchEntry AND %InLineBatchButton)
  665. IF TC:BRW:ActiveList = %ListControl                   #<!If Pressed while on %ListControl
  666.   POST(TCEVENT:InsertBatch,%ListControl)              #<!  Send Insert Batch Message to List Box
  667. END                                                   #<!End If
  668.   #ENDIF
  669. #ENDAT
  670. #!-------------------------------------------------------------------------
  671. #AT(%ModuleDataSection),WHERE(%UsingInLineEntry)
  672. #INSERT(%InLineEntryMAPDeclaration)
  673. #ENDAT
  674. #!-------------------------------------------------------------------------
  675. #AT(%LocalProcedures)
  676. #IF(%UsingInLineEntry)
  677.   #IF(%InLineInsertAllowed OR %InLineChangeAllowed OR %InLineDeleteAllowed)
  678. #INSERT(%InLineEntryProcedure)
  679.   #ELSE
  680.     #ERROR('ERROR#007:' & %Procedure & '-You Did Not Allow Inserts, Changes, or Deletes')
  681.   #END
  682. #ENDIF
  683. #ENDAT
  684. #!-------------------------------------------------------------------------
  685. #AT(%EndOfProcedure)
  686.   #IF(%UsingMultiDisplay)
  687. FREE(%SortOrderQueue)                               #<!Release Memory use by SortOrder Queue
  688.   #ENDIF
  689. FREE(%ListQueue)                                    #<!Release Memory use by Browse Queue
  690. #ENDAT
  691. #!-------------------------------------------------------------------------
  692. #AT(%RefreshWindowBeforeDisplay)
  693.   #IF(%RelationToListBoxes <> 'Child' AND %RelationToListBoxes <> 'Both')
  694.     #IF(%UsingBrowseTotals)
  695. DO BrowseInitTotals:%BrwLbl
  696.     #ENDIF
  697. TC_PROP:BRW(%ListControl,TCPROP:Action,TCACTION:Refresh)
  698. TC_PROP:BRW(%ListControl,TCPROP:SetToItem,CHOICE(%ListControl))
  699. TC_PROP:BRW(%ListControl,TCPROP:DontSelect,True)
  700. DO BrowseList:%BrwLbl
  701.   #ENDIF
  702. #ENDAT
  703. #!-------------------------------------------------------------------------
  704. #AT(%ResizeOptionsForTabControls)
  705.   #IF(%EnableWindowResize AND %ListControl = %ResizeListBox)
  706.     #IF(%UsingMultiDisplay)
  707.       #FIX(%Control,%ChangeOrderControl)
  708.       #CASE(%ControlTemplate)
  709.       #OF('OrderCWTab(ToolCraft)')
  710. TC:RSZ:SetTabHeight = 2                             #<!  Keep Tab Control Same Height as List 
  711. TC:RSZ:SetTabWidth = 2                              #<!  Keep Tab Control Same Width as List
  712. TC:RSZ:TabControl = %ChangeOrderControl             #<!  Tell Resize About Tab Control
  713.       #OF('OrderSAXTab(ToolCraft)')
  714. TC:RSZ:SetTabWidth = 1                              #<!  Keep Tab Control Same Width as List
  715. TC:RSZ:TabControl = %ChangeOrderControl             #<!  Tell Resize About Tab Control
  716.       #OF('OrderTabVbx(ToolCraft)')
  717.       #OROF('OrderTabPro(ToolCraft)')
  718.         #IF(INSTRING('''Orientation''(''1'')',%ControlStatement,1,1) OR INSTRING('''Orientation''(''3'')',%ControlStatement,1,1))
  719. TC:RSZ:SetTabHeight = 1                             #<!  Keep Tab Control Same Height as List
  720.         #ELSE
  721. TC:RSZ:SetTabWidth = 1                              #<!  Keep Tab Control Same Width as List
  722.         #ENDIF
  723. TC:RSZ:TabControl = %ChangeOrderControl             #<!  Tell Resize About Tab Control
  724.       #ENDCASE
  725.     #ENDIF
  726.   #ENDIF
  727.   #IF(%EnableWindowResize AND %ListControl = %SecondaryResizeListBox)
  728.     #IF(%UsingMultiDisplay)
  729.       #FIX(%Control,%ChangeOrderControl)
  730.       #CASE(%ControlTemplate)
  731.       #OF('OrderCWTab(ToolCraft)')
  732. TC:RSZ:TabControl2 = %ChangeOrderControl             #<!  Tell Resize About Tab Control
  733.       #OF('OrderSAXTab(ToolCraft)')
  734. TC:RSZ:TabControl2 = %ChangeOrderControl            #<!Tell Resize About Secondary Tab Control
  735.         #SET(%SecondaryResizeTabControl,%ChangeOrderControl)
  736.       #OF('OrderTabVbx(ToolCraft)')
  737.       #OROF('OrderTabPro(ToolCraft)')
  738. TC:RSZ:TabControl2 = %ChangeOrderControl            #<!Tell Resize About Secondary Tab Control
  739.         #SET(%SecondaryResizeTabControl,%ChangeOrderControl)
  740.       #ENDCASE
  741.     #ENDIF
  742.   #ENDIF
  743. #ENDAT
  744. #!-------------------------------------------------------------------------
  745. #AT(%ControlEventHandling,%LocatorControl,'Accepted')
  746.   #IF(%UsingEntryLocator)
  747. DO EntrySearch:%BrwLbl
  748.   #ENDIF
  749. #ENDAT
  750. #!-------------------------------------------------------------------------
  751. #AT(%ControlPostEventCaseHandling,%ListControl),WHERE(%ProcedureTemplate <> 'PowerBrowse')
  752. #EMBED(%BeforeCallBrowseListRoutine,'Just Before Calling BrowseList Routine'),%ActiveTemplateInstance,MAP(%ActiveTemplateInstance,%ActiveTemplateinstanceDescription)
  753. DO BrowseList:%BrwLbl                                        #<!Fill Browse Area
  754. #EMBED(%AfterCallBrowseListRoutine,'Just After Calling BrowseList Routine'),%ActiveTemplateInstance,MAP(%ActiveTemplateInstance,%ActiveTemplateinstanceDescription)
  755. #ENDAT
  756. #!-------------------------------------------------------------------------
  757. #AT(%CallBrowseListRoutine,%ListControl),WHERE(%ProcedureTemplate = 'PowerBrowse')
  758. #EMBED(%BeforeCallBrowseListRoutine,'Just Before Calling BrowseList Routine'),%ActiveTemplateInstance,MAP(%ActiveTemplateInstance,%ActiveTemplateinstanceDescription)
  759. DO BrowseList:%BrwLbl                                        #<!Fill Browse Area
  760. #EMBED(%AfterCallBrowseListRoutine,'Just After Calling BrowseList Routine'),%ActiveTemplateInstance,MAP(%ActiveTemplateInstance,%ActiveTemplateinstanceDescription)
  761. #ENDAT
  762. #!-------------------------------------------------------------------------
  763. #AT(%BeforeAccept)
  764.   #IF(%UsingIncrementalLocator)
  765. %ListControl{Prop:Alrt,250} = BSKey                         #<!Alert BackSpace Key for Incremental Locator
  766. %ListControl{Prop:Alrt,249} = SpaceKey                      #<!Alert Space Key for Incremental Locator
  767.   #ENDIF
  768. #ENDAT
  769. #!-------------------------------------------------------------------------
  770. #AT(%ControlEventHandling,%ListControl,'AlertKey')
  771. #IF(%UsingStepLocator)
  772. DO StepSearch:%BrwLbl
  773. #ENDIF
  774. #IF(%UsingIncrementalLocator)
  775. DO IncrementalSearch:%BrwLbl
  776. #ENDIF
  777. #ENDAT
  778. #!-------------------------------------------------------------------------
  779. #AT(%ControlEventHandling,%ListControl,'Locate')
  780.   #IF(%UsingEntryLocator OR %UsingIncrementalLocator)
  781.     #FOR(%Control),WHERE(%Control=%ListControl AND EXTRACT(%ControlStatement,'VCR'))
  782. SELECT(?%LocatorField)                                      #<!Select Locator Field
  783.     #ENDFOR
  784.   #ENDIF
  785. #ENDAT
  786. #!-------------------------------------------------------------------------
  787. #AT(%BeforeCallBrowseListRoutine,%ActiveTemplateInstance)
  788.   #IF(%UsingEntryLocator OR %UsingIncrementalLocator)
  789. IF EVENT() <> EVENT:AlertKey AND |                          #<!If Not an Alert Key or a
  790.    EVENT() <> EVENT:PreAlertKey AND |                       #<!   Pre-Alert Key Event and
  791.    EVENT() <> EVENT:Selected                                #<!   Control not reselected
  792.     #IF(%UsingIncrementalLocator)
  793.   LocLen:%BrwLbl = 0                                        #<!  Clear Locator Length
  794.     #ENDIF
  795.   %LocatorField = ''                                        #<!  Clear the Search Input Field
  796.   DISPLAY(?%LocatorField)                                   #<!  Display Locator Field
  797. END                                                         #<!End If
  798.   #ENDIF
  799. #ENDAT
  800. #!-------------------------------------------------------------------------
  801. #AT(%ControlEventHandling,%ChangeOrderControl,'Accepted')
  802.   #IF(%ChangeOrderControlType = 'DropBox' OR %ChangeOrderControlType = 'OptBox')
  803. GET(%SortOrderQueue,CHOICE())                               #<!Get Order settings from Sort Orders Queue
  804. IF NOT ERROR()                                              #<!IF Valid Choice was Selected
  805.   %SrtPfx:SortOrder = CHOICE()                              #<!  Set sort order
  806.   #IF(%UsingEntryLocator OR %UsingIncrementalLocator)
  807.   %LocatorControl{PROP:Text} = %SrtPfx:SearchPicture        #<!  Set Picture for Search Field
  808.   #ENDIF
  809.   %ListControl{PROP:Format} = %SrtPfx:OrderFormat           #<!  Set number of rows in list box
  810.   TC_PROP:BRW(%ListControl,TCPROP:Rows,%ListControl{PROP:Items}) #<!  Reset number of rows property
  811.   TC_PROP:BRW(%ListControl,TCPROP:Action,TCACTION:Refresh)  #<!  Tell Browse to start redisplay with a search by key
  812.   TC_PROP:BRW(%ListControl,TCPROP:SetToPosition,2)          #<!  Set Redisplay at Key Position in Queue
  813.   DO BrowseList:%BrwLbl                                     #<!  Call BrowseList and Execute Redisplay
  814. END                                                         #<!End
  815.   #ENDIF
  816. #ENDAT
  817. #!-------------------------------------------------------------------------
  818. #AT(%ControlEventHandling,%ChangeOrderControl,'NewSelection')
  819.   #IF(%ChangeOrderControlType = 'CWTab')
  820. GET(%SortOrderQueue,CHOICE())                               #<!Get Order settings from Sort Orders Queue
  821. IF NOT ERROR()                                              #<!IF Valid Choice was Selected
  822.   %SrtPfx:SortOrder = CHOICE()                              #<!  Set sort order
  823.   #IF(%UsingEntryLocator OR %UsingIncrementalLocator)
  824.   %LocatorControl{PROP:Text} = %SrtPfx:SearchPicture        #<!  Set Picture for Search Field
  825.   #ENDIF
  826.   %ListControl{PROP:Format} = %SrtPfx:OrderFormat           #<!  Set number of rows in list box
  827.   TC_PROP:BRW(%ListControl,TCPROP:Rows,%ListControl{PROP:Items}) #<!  Reset number of rows property
  828.   TC_PROP:BRW(%ListControl,TCPROP:Action,TCACTION:Refresh)  #<!  Tell Browse to start redisplay with a search by key
  829.   TC_PROP:BRW(%ListControl,TCPROP:SetToPosition,2)          #<!  Set Redisplay at Key Position from Queue
  830.   DO BrowseList:%BrwLbl                                     #<!  Call BrowseList and Execute Redisplay
  831. END                                                         #<!End
  832.   #ENDIF
  833. #ENDAT
  834. #!-------------------------------------------------------------------------
  835. #AT(%ControlEventHandling,%ChangeOrderControl,'VBXEvent')
  836.   #IF(%ChangeOrderControlType = 'SAXTab')
  837. Choice%# = %ChangeOrderControl{'ActiveTab','Get'} + 1       #<!Read Choice Made for Tab Control
  838.   #ENDIF
  839.   #IF(%ChangeOrderControlType = 'TabVbx' OR %ChangeOrderControlType = 'TabPro')
  840. IF NOT %ChangeOrderControl{PROP:VBXEvent} = 'TabShown'      #<!If Not Tab Shown Event
  841.  CYCLE                                                      #<!  Don't Process the Event
  842. END                                                         #<!End if
  843. Choice%# = %ChangeOrderControl{'ActiveTab'} + 1             #<!Read Choice Made for Tab Control
  844.   #ENDIF
  845.   #CASE(%ChangeOrderControlType)
  846.   #OF('SAXTab')
  847.   #OROF('TabVbx')
  848.   #OROF('TabPro')
  849. GET(%SortOrderQueue,Choice%#)                               #<!Get Order settings from Sort Orders Queue
  850. IF NOT ERROR()                                              #<!IF Valid Choice was Selected
  851.   %SrtPfx:SortOrder = Choice%#                              #<!  Set sort order
  852.     #IF(%UsingEntryLocator OR %UsingIncrementalLocator)
  853.   %LocatorControl{PROP:Text} = %SrtPfx:SearchPicture        #<!  Set Picture for Search Field
  854.     #ENDIF
  855.   %ListControl{PROP:Format} = %SrtPfx:OrderFormat           #<!  Set number of rows in list box
  856.   TC_PROP:BRW(%ListControl,TCPROP:Rows,%ListControl{PROP:Items}) #<!  Reset number of rows property
  857.   TC_PROP:BRW(%ListControl,TCPROP:Action,TCACTION:Refresh)  #<!  Tell Browse to start redisplay with a search by key
  858.   TC_PROP:BRW(%ListControl,TCPROP:SetToPosition,2)          #<!  Set Redisplay at Key Position from Queue
  859.   DO BrowseList:%BrwLbl                                     #<!  Call BrowseList and Execute Redisplay
  860. END                                                         #<!End
  861.   #ENDCASE
  862. #ENDAT
  863. #!-------------------------------------------------------------------------
  864. #AT(%AfterWindowOpening)
  865.   #IF(%UsingMultiDisplay)
  866. DO LoadSortOrders:%BrwLbl
  867.   #ENDIF
  868. #ENDAT
  869. #!
  870. #!
  871. #!
  872. #!=============================================================================!
  873. #!                                                                             !
  874. #! Alternate List Format Control                                               !
  875. #!                                                                             !
  876. #!=============================================================================!
  877. #CONTROL(AlternateListFormat,'Alternate List Box Format'),REQ(BrowseBox(ToolCraft)),MULTI
  878.     CONTROLS
  879.        LIST,AT(,,39,9),USE(?Fmt1:Order),FROM('Null'),HIDE,FONT('System',,0FF0000H,FONT:bold)
  880.     END
  881.  
  882. #BUTTON('Alternate List Format Options'),AT(10,,180)
  883.   #SHEET
  884.     #PREPARE
  885.       #FIND(%ControlInstance,%ActiveTemplateInstance,%Control)
  886.     #ENDPREPARE
  887.     #TAB('&Colors'),WHERE(NOT %ControlHasColor),HLP('~PBAlternateListFormatColorsTab')
  888.       #DISPLAY('No color options were checked in the list box formatter.')
  889.       #DISPLAY('To enable colors in a list box you must first check the')
  890.       #DISPLAY('color option for each field that will use coloring.')
  891.       #DISPLAY('After you complete this step you a will be able to set the')
  892.       #DISPLAY('color properties for each field from this page.')
  893.     #ENDTAB
  894.     #TAB('&Colors'),WHERE(%ControlHasColor),HLP('~PBAlternateListFormatColorsTab')
  895.       #PREPARE
  896.         #FIND(%ControlInstance,%ActiveTemplateInstance,%Control)
  897.       #ENDPREPARE
  898.       #BUTTON('Customize Colors'),FROM(%ControlField,%ControlField),AT(,30),HLP('~PBAlternateListFormatCustomizeColors'),INLINE,WHERE(%ControlFieldHasColor)
  899.         #PREPARE
  900.           #FIND(%ControlInstance,%ActiveTemplateInstance,%Control)
  901.         #ENDPREPARE
  902.         #BOXED('Default Colors')
  903.           #PROMPT('&Foreground Normal:',COLOR),%ControlFieldForegroundNormal,DEFAULT(-1)
  904.           #PROMPT('&Background Normal:',COLOR),%ControlFieldBackgroundNormal,DEFAULT(-1)
  905.           #PROMPT('&Foreground Selected:',COLOR),%ControlFieldForegroundSelected,DEFAULT(-1)
  906.           #PROMPT('&Background Selected:',COLOR),%ControlFieldBackgroundSelected,DEFAULT(-1)
  907.         #ENDBOXED
  908.         #BOXED('Conditional Color Assignments')
  909.           #BUTTON('Conditional Color Assignments'),MULTI(%ConditionalColors,%ColorCondition),INLINE,HLP('~PBConditionalColors')
  910.             #PROMPT('&Condition:',@S255),%ColorCondition
  911.             #PROMPT('&Foreground Normal:',COLOR),%ConditionalControlFieldForegroundNormal,DEFAULT(-1)
  912.             #PROMPT('&Background Normal:',COLOR),%ConditionalControlFieldBackgroundNormal,DEFAULT(-1)
  913.             #PROMPT('&Foreground Selected:',COLOR),%ConditionalControlFieldForegroundSelected,DEFAULT(-1)
  914.             #PROMPT('&Background Selected:',COLOR),%ConditionalControlFieldBackgroundSelected,DEFAULT(-1)
  915.           #ENDBUTTON
  916.         #ENDBOXED
  917.       #ENDBUTTON
  918.     #ENDTAB
  919.     #PREPARE
  920.       #FIND(%ControlInstance,%ActiveTemplateInstance,%Control)
  921.     #ENDPREPARE
  922.     #TAB('&Icons'),WHERE(NOT %ControlHasIcon),HLP('~PBAlternateListFormatIconsTab')
  923.       #DISPLAY('No icons fields were defined in the list box formatter.')
  924.       #DISPLAY('To define an icon in a list box you must first check the')
  925.       #DISPLAY('icon option for each field that will display an icon.')
  926.       #DISPLAY('After you complete this step you a will be able to set the')
  927.       #DISPLAY('icon properties for each field from this page.')
  928.     #ENDTAB
  929.     #TAB('&Icons'),WHERE(%ControlHasIcon),HLP('~PBAlternateListFormatIconsTab')
  930.       #PREPARE
  931.         #FIND(%ControlInstance,%ActiveTemplateInstance,%Control)
  932.       #ENDPREPARE
  933.       #BUTTON('&Customize Icons'),FROM(%ControlField,%ControlField & ' - ' & %ControlFieldIcon),AT(,30),HLP('~PBAlternateListFormatCustomizeIcons'),INLINE,WHERE(%ControlFieldHasIcon)
  934.         #PREPARE
  935.           #FIND(%ControlInstance,%ActiveTemplateInstance,%Control)
  936.         #ENDPREPARE
  937.         #BOXED('Default Icon')
  938.           #PROMPT('Icon:',@S40),%ControlFieldIcon
  939.         #ENDBOXED
  940.         #BOXED('Conditional Icon Usage')
  941.           #BUTTON('&Conditional Icon Usage'),MULTI(%ConditionalIcons,%IconCondition),INLINE,HLP('~PBConditionalIcons')
  942.             #PROMPT('&Condition:',@S255),%IconCondition
  943.             #PROMPT('Icon:',@S40),%ConditionalControlFieldIcon
  944.           #ENDBUTTON
  945.         #ENDBOXED
  946.       #ENDBUTTON
  947.     #ENDTAB
  948.   #ENDSHEET
  949. #ENDBUTTON
  950. #!
  951. #!
  952. #ATSTART
  953.   #DECLARE(%AltFmtControl)
  954.   #DECLARE(%AltFmtBrwLbl)
  955.   #DECLARE(%AltFmtListControl)
  956.   #DECLARE(%IndentValue)
  957.   #FOR(%Control),WHERE(%ControlInstance = %ActiveTemplateInstance)
  958.     #SET(%AltFmtControl,%Control)
  959.   #ENDFOR
  960.   #FOR(%Control),WHERE(%ControlInstance = %ActiveTemplateParentInstance)
  961.     #SET(%AltFmtBrwLbl,%ControlFrom)
  962.     #SET(%AltFmtListControl,%Control)
  963.   #ENDFOR
  964. #ENDAT
  965. #!------------------------------------------------------------------------
  966. #AT(%SetIconListProperties),WHERE(%ListBoxHasIcon)
  967. #INSERT(%AddAllIconsForControl)
  968. #ENDAT
  969. #!------------------------------------------------------------------------
  970. #AT(%SetFieldColors,%AltFmtControl)
  971. #INSERT(%SetColorValues,%AltFmtControl,%AltFmtBrwLbl,%IndentValue)
  972. #ENDAT
  973. #!------------------------------------------------------------------------
  974. #AT(%SetFieldIcons,%AltFmtControl)
  975. #INSERT(%SetIconValues,%AltFmtControl,%AltFmtBrwLbl,%IndentValue,%AltFmtListControl)
  976. #ENDAT
  977. #!------------------------------------------------------------------------
  978. #!
  979. #!
  980. #!=============================================================================!
  981. #!                                                                             !
  982. #! Select Button Control                                                       !
  983. #!                                                                             !
  984. #!=============================================================================!
  985. #CONTROL(SelectButton,'Select a record from a BrowseBox Control'),REQ(BrowseBox(ToolCraft)),FIRST
  986.      CONTROLS
  987.        BUTTON('Select'),AT(,,40,10),KEY(EnterKey),USE(?Select)
  988.      END
  989.  
  990. #BOXED('Power Browse Settings')
  991.   #BUTTON('Select Button Prompts'),AT(10,11,180),HLP('~PBSelectButton')
  992.     #PROMPT('Hide When Browse Not Called as a Lookup',CHECK),%HideIfDisabled,AT(10,10,150)
  993.     #PROMPT('Don''t Disable Button when List Box is Empty',CHECK),%NoSelectButtonDisable,DEFAULT(0),AT(10,,180)
  994.   #ENDBUTTON
  995. #ENDBOXED
  996. #ATSTART
  997.   #DECLARE(%SelectListControl)
  998.   #DECLARE(%SelectBrwLbl)
  999.   #DECLARE(%SelectControl)
  1000.   #FOR(%Control),WHERE(%ControlInstance = %ActiveTemplateInstance)
  1001.     #SET(%SelectControl,%Control)
  1002.   #ENDFOR
  1003.   #FOR(%Control),WHERE(%ControlInstance = %ActiveTemplateParentInstance)
  1004.     #SET(%SelectListControl,%Control)
  1005.     #SET(%SelectBrwLbl,%ControlFrom)
  1006.   #ENDFOR
  1007. #ENDAT
  1008. #!------------------------------------------------------------------------
  1009. #AT(%EnableSaveButtons,%SelectListControl),WHERE(NOT %NoSelectButtonDisable)
  1010.   #FOR(%Control),WHERE(%Control=%SelectControl AND NOT EXTRACT(%ControlStatement,'DISABLE'))
  1011. IF OriginalRequest = SelectRecord                                    #<!    If Browse was Called as a Lookup
  1012.   ENABLE(%SelectControl)                                             #<!      Enable the Select Button
  1013. END                                                                  #<!    End If
  1014.   #ENDFOR
  1015. #ENDAT
  1016. #!------------------------------------------------------------------------
  1017. #AT(%DisableSaveButtons,%SelectListControl),WHERE(NOT %NoSelectButtonDisable)
  1018.   #FOR(%Control),WHERE(%Control=%SelectControl AND NOT EXTRACT(%ControlStatement,'DISABLE'))
  1019. IF OriginalRequest = SelectRecord                                    #<!    If Browse was Called as a Lookup
  1020.   DISABLE(%SelectControl)                                            #<!      Disable the Select Button
  1021. END                                                                  #<!    End If
  1022.   #ENDFOR
  1023. #ENDAT
  1024. #!------------------------------------------------------------------------
  1025. #AT(%AfterWindowOpening)
  1026. IF LocalRequest = SelectRecord                                       #<!If Calling Procedure as a Lookup
  1027.   #IF(%HideIfDisabled)
  1028.   UNHIDE(%SelectControl)                                             #<!  Unhide the Select Button
  1029.   #ENDIF
  1030.   ENABLE(%SelectControl)                                             #<!  Enable the Select Button
  1031. ELSE                                                                 #<!Otherwise
  1032.   #IF(%HideIfDisabled)
  1033.   HIDE(%SelectControl)                                               #<!  Hide the Select Button
  1034.   #ENDIF
  1035.   DISABLE(%SelectControl)                                            #<!  Disable the Select Button
  1036. END                                                                  #<!End If
  1037. #ENDAT
  1038. #!------------------------------------------------------------------------
  1039. #AT(%ControlEventHandling,%SelectControl,'Accepted')
  1040. GET(%SelectBrwLbl,TC_PROP:BRW(%SelectListControl,TCPROP:CurItem))    #<!  Reread Current Record Position
  1041. REGET(%Primary,%SelectBrwLbl:Position)                               #<!  Load the Record
  1042. LocalResponse = RequestCompleted                                     #<!  Lookup was completed
  1043. POST(Event:CloseWindow)                                              #<!  Return Selected Record to Caller
  1044. #ENDAT
  1045. #!
  1046. #!
  1047. #!=============================================================================!
  1048. #!                                                                             !
  1049. #! Reverse Key Order Button Control                                            !
  1050. #!                                                                             !
  1051. #!=============================================================================!
  1052. #CONTROL(ReverseKeyOrderButton,'Reverse Key Display Order Button'),REQ(BrowseBox(ToolCraft)),MULTI
  1053.      CONTROLS
  1054.        BUTTON('Reverse'),AT(,,40,10),USE(?RevKeyOrder)
  1055.      END
  1056.  
  1057. #BOXED('Power Browse Settings')
  1058.   #BUTTON('Reverse Key Order Button Prompts'),AT(10,11,180),HLP('~PBReverseKeyOrderButton')
  1059.     #PROMPT('Key Order on Open:',DROP('Normal|Reverse')),%RevKeyOrderDefaultMode,DEFAULT('Normal')
  1060.     #PROMPT('Button Text for Normal:',@S30),%RevKeyOrderButtonTextNormal,DEFAULT('Normal')
  1061.     #PROMPT('Button Text for Reverse:',@S30),%RevKeyOrderButtonTextReverse,DEFAULT('Reverse')
  1062.   #ENDBUTTON
  1063. #ENDBOXED
  1064. #!
  1065. #!
  1066. #ATSTART
  1067. #DECLARE(%RevKeyOrderControl)
  1068. #DECLARE(%RevKeyOrderListControl)
  1069. #DECLARE(%RevKeyOrderBrwLbl)
  1070. #FOR(%Control),WHERE(%ControlInstance = %ActiveTemplateInstance)
  1071.   #SET(%RevKeyOrderControl,%Control)
  1072. #ENDFOR
  1073. #FOR(%Control),WHERE(%ControlInstance = %ActiveTemplateParentInstance)
  1074.   #SET(%RevKeyOrderListControl,%Control)
  1075.   #SET(%RevKeyOrderBrwLbl,%ControlFrom)
  1076. #ENDFOR
  1077. #IF(NOT %UsingRevKeyOrder)
  1078.   #ERROR('ERROR#010:' & %Procedure & ' - Reverse Key Order Button is invalid because ' & %RevKeyOrderListControl & ' is not set to use reverse key order.')
  1079. #ENDIF
  1080. #ENDAT
  1081. #!
  1082. #!-------------------------------------------------------------------------
  1083. #AT(%AfterWindowOpening),WHERE(%UsingRevKeyOrder)
  1084. #IF(%RevKeyOrderDefaultMode='Normal')
  1085. RevOrder:%RevKeyOrderBrwLbl = False                                 #<!Set Normal Key Order for %RevKeyOrderBrwLbl
  1086. %RevKeyOrderControl{PROP:Text} = '%RevKeyOrderButtonTextReverse'    #<!Set Test for Rev Key Order Button
  1087. #ELSE
  1088. RevOrder:%RevKeyOrderBrwLbl = True                                  #<!Set Reverse Key Order for %RevKeyOrderBrwLbl
  1089. %RevKeyOrderControl{PROP:Text} = '%RevKeyOrderButtonTextNormal'     #<!Set Test for Rev Key Order Button
  1090. #ENDIF
  1091. #ENDAT
  1092. #!-------------------------------------------------------------------------
  1093. #AT(%ControlEventHandling,%RevKeyOrderControl,'Accepted'),WHERE(%UsingRevKeyOrder)
  1094. IF RevOrder:%RevKeyOrderBrwLbl
  1095.   RevOrder:%RevKeyOrderBrwLbl = False
  1096.   %RevKeyOrderControl{PROP:Text} = '%RevKeyOrderButtonTextReverse'
  1097. ELSE
  1098.   RevOrder:%RevKeyOrderBrwLbl = True
  1099.   %RevKeyOrderControl{PROP:Text} = '%RevKeyOrderButtonTextNormal'
  1100. END
  1101. POST(TCEVENT:SamePage,%RevKeyOrderListControl)
  1102. #ENDAT
  1103. #!
  1104. #!
  1105. #!=============================================================================!
  1106. #!                                                                             !
  1107. #! InLine On/Off Button Control                                                !
  1108. #!                                                                             !
  1109. #!=============================================================================!
  1110. #CONTROL(InLineOnOffButton,'InLine On/Off Button'),REQ(PowerBrowseLibrary(ToolCraft))
  1111.      CONTROLS
  1112.        BUTTON('InLine On/Off'),AT(,,55,12),USE(?InLineToggle)
  1113.      END
  1114.  
  1115. #BOXED('Power Browse Settings')
  1116.   #BUTTON('InLine On/Off Button Prompts'),AT(10,11,180),HLP('~PBInLineOnOffButton')
  1117.     #PROMPT('InLine Mode on Open:',DROP('On|Off')),%InLineDefaultMode,DEFAULT('On')
  1118.     #PROMPT('Button Text When On:',@S30),%InLineButtonTextOn,DEFAULT('InLine On')
  1119.     #PROMPT('Button Text When Off:',@S30),%InLineButtonTextOff,DEFAULT('InLine Off')
  1120.   #ENDBUTTON
  1121. #ENDBOXED
  1122. #!
  1123. #!
  1124. #ATSTART
  1125. #DECLARE(%InLineOnOffControl)
  1126. #FOR(%Control),WHERE(%ControlInstance = %ActiveTemplateInstance)
  1127.   #SET(%InLineOnOffControl,%Control)
  1128. #ENDFOR
  1129. #ENDAT
  1130. #!
  1131. #!-------------------------------------------------------------------------
  1132. #AT(%OtherLocalVariables)
  1133. #IF(%InLineDefaultMode='On')
  1134. InLineActive         BYTE(1)
  1135. #ELSE
  1136. InLineActive         BYTE(0)
  1137. #ENDIF
  1138. #ENDAT
  1139. #!-------------------------------------------------------------------------
  1140. #AT(%AfterWindowOpening)
  1141. #IF(%InLineDefaultMode='On')
  1142. %InLineOnOffControl{PROP:Text} = '%InLineButtonTextOn'
  1143. #ELSE
  1144. %InLineOnOffControl{PROP:Text} = '%InLineButtonTextOff'
  1145. #ENDIF
  1146. #ENDAT
  1147. #!-------------------------------------------------------------------------
  1148. #AT(%ControlEventHandling,%InLineOnOffControl,'Accepted')
  1149. IF InLineActive
  1150.   %InLineOnOffControl{PROP:Text} = '%InLineButtonTextOff'
  1151.   InLineActive = 0
  1152. ELSE
  1153.   %InLineOnOffControl{PROP:Text} = '%InLineButtonTextOn'
  1154.   InLineActive = 1
  1155. END
  1156. SELECT(TC:BRW:ActiveList)
  1157. #END
  1158. #!
  1159. #!
  1160. #!=============================================================================!
  1161. #!                                                                             !
  1162. #! Update Buttons Control                                                      !
  1163. #!                                                                             !
  1164. #!=============================================================================!
  1165. #CONTROL(UpdateButtons,'Update Records from a Browse Box Control'),REQ(BrowseBox(ToolCraft)),MULTI
  1166.      CONTROLS
  1167.        BUTTON('Insert'),AT(,,40,10),USE(?Insert)
  1168.        BUTTON('Change'),AT(42,0,40,10),USE(?Change)
  1169.        BUTTON('Delete'),AT(42,0,40,10),USE(?Delete)
  1170.      END
  1171.  
  1172. #BOXED('Power Browse Settings')
  1173.   #BUTTON('Update Button Prompts'),AT(10,11,180),HLP('~PBUpdateButtons')
  1174.     #PROMPT('Share the Buttons Between All List Boxes',CHECK),%UseUpdateButtonsOnAllBoxes,DEFAULT(0),AT(10,,150)
  1175.     #PROMPT('Don''t Disable Buttons when List Box is Empty',CHECK),%NoUpdateButtonDisable,DEFAULT(0),AT(10,,180)
  1176.     #PROMPT('Auto Add when Entering an Empty List Box',CHECK),%AutoAddOnEmptyListBox,DEFAULT(0),AT(10,,150)
  1177.     #PROMPT('Close Window After Deleting Last Record in List Box',CHECK),%CloseOnLastDelete,DEFAULT(0),AT(10,,185)
  1178.   #ENDBUTTON
  1179. #ENDBOXED
  1180.  
  1181. #ATSTART
  1182.   #DECLARE(%UpdateListControl)
  1183.   #DECLARE(%InsertControl)
  1184.   #DECLARE(%ChangeControl)
  1185.   #DECLARE(%DeleteControl)
  1186.   #FOR(%Control),WHERE(%ControlInstance = %ActiveTemplateParentInstance)
  1187.     #SET(%UpdateListControl,%Control)
  1188.   #ENDFOR
  1189.   #FOR(%Control),WHERE(%ControlInstance = %ActiveTemplateInstance)
  1190.     #CASE(%ControlOriginal)
  1191.     #OF('?Insert')
  1192.       #SET(%InsertControl,%Control)
  1193.     #OF('?Change')
  1194.       #SET(%ChangeControl,%Control)
  1195.     #OF('?Delete')
  1196.       #SET(%DeleteControl,%Control)
  1197.     #ENDCASE
  1198.   #ENDFOR
  1199. #ENDAT
  1200. #!------------------------------------------------------------------------
  1201. #AT(%NoRecordsAction,%UpdateListControl),WHERE(%AutoAddOnEmptyListBox)
  1202. IF NOT TC:BRW:DeletedLast                          #<!If Not Deleting Last Record
  1203.   POST(TCEVENT:InsertRecord,%UpdateListControl)    #<!  Automatically Add when Empty
  1204. END                                                #<!End If
  1205. #ENDAT
  1206. #!------------------------------------------------------------------------
  1207. #AT(%NoRecordsAction,%UpdateListControl),WHERE(%CloseOnLastDelete)
  1208. IF TC:BRW:DeletedLast                              #<!If Deleted Last Record
  1209.   POST(EVENT:CloseWindow)                          #<!  Exit on Delete of Last Record
  1210. END                                                #<!End If
  1211. #ENDAT
  1212. #!------------------------------------------------------------------------
  1213. #AT(%EnableInsertButton,%UpdateListControl),WHERE(NOT %NoUpdateButtonDisable)
  1214.   #FOR(%Control),WHERE(%Control=%InsertControl AND NOT EXTRACT(%ControlStatement,'DISABLE'))
  1215. ENABLE(%InsertControl)                             #<!    Enable Child List Insert Button
  1216.   #ENDFOR
  1217. #ENDAT
  1218. #!------------------------------------------------------------------------
  1219. #AT(%DisableInsertButton,%UpdateListControl),WHERE(NOT %NoUpdateButtonDisable)
  1220.   #FOR(%Control),WHERE(%Control=%InsertControl AND NOT EXTRACT(%ControlStatement,'DISABLE'))
  1221. DISABLE(%InsertControl)                            #<!    Disable Child List Insert Button
  1222.   #ENDFOR
  1223. #ENDAT
  1224. #!------------------------------------------------------------------------
  1225. #AT(%EnableSaveButtons,%UpdateListControl),WHERE(NOT %NoUpdateButtonDisable)
  1226.   #FOR(%Control),WHERE(%Control=%ChangeControl AND NOT EXTRACT(%ControlStatement,'DISABLE'))
  1227. ENABLE(%ChangeControl)                             #<!    Enable Change Button
  1228.   #ENDFOR
  1229.   #FOR(%Control),WHERE(%Control=%DeleteControl AND NOT EXTRACT(%ControlStatement,'DISABLE'))
  1230. ENABLE(%DeleteControl)                             #<!    Enable Delete Button
  1231.   #ENDFOR
  1232. #ENDAT
  1233. #!------------------------------------------------------------------------
  1234. #AT(%DisableSaveButtons,%UpdateListControl),WHERE(NOT %NoUpdateButtonDisable)
  1235.   #FOR(%Control),WHERE(%Control=%ChangeControl AND NOT EXTRACT(%ControlStatement,'DISABLE'))
  1236. DISABLE(%ChangeControl)                            #<!    Disable Change Button
  1237.   #ENDFOR
  1238.   #FOR(%Control),WHERE(%Control=%DeleteControl AND NOT EXTRACT(%ControlStatement,'DISABLE'))
  1239. DISABLE(%DeleteControl)                            #<!    Disable Delete Button
  1240.   #ENDFOR
  1241. #ENDAT
  1242. #!------------------------------------------------------------------------
  1243. #AT(%ControlEventHandling,%InsertControl,'Accepted')
  1244.   #IF(%UseUpdateButtonsOnAllBoxes)
  1245. POST(TCEVENT:InsertRecord,TC:BRW:ActiveList)       #<!Send Insert Message to List Box
  1246.   #ELSE
  1247. POST(TCEVENT:InsertRecord,%UpdateListControl)      #<!Send Insert Message to List Box
  1248.   #ENDIF
  1249. #ENDAT
  1250. #!------------------------------------------------------------------------
  1251. #AT(%ControlEventHandling,%ChangeControl,'Accepted')
  1252.   #IF(%UseUpdateButtonsOnAllBoxes)
  1253. POST(TCEVENT:ChangeRecord,TC:BRW:ActiveList)       #<!Send Change Message to List Box
  1254.   #ELSE
  1255. POST(TCEVENT:ChangeRecord,%UpdateListControl)      #<!Send Change Message to List Box
  1256.   #ENDIF
  1257. #ENDAT
  1258. #!------------------------------------------------------------------------
  1259. #AT(%ControlEventHandling,%DeleteControl,'Accepted')
  1260.   #IF(%UseUpdateButtonsOnAllBoxes)
  1261. POST(TCEVENT:DeleteRecord,TC:BRW:ActiveList)       #<!Send Delete Message to List Box
  1262.   #ELSE
  1263. POST(TCEVENT:DeleteRecord,%UpdateListControl)      #<!Send Delete Message to List Box
  1264.   #ENDIF
  1265. #ENDAT
  1266. #!------------------------------------------------------------------------
  1267. #!
  1268. #!
  1269. #!
  1270. #!=============================================================================!
  1271. #!                                                                             !
  1272. #! Search Entry Field Control                                                  !
  1273. #!                                                                             !
  1274. #!=============================================================================!
  1275. #CONTROL(SearchEntry,'Search Entry Field'),MULTI
  1276.      CONTROLS
  1277.        ENTRY(@S40),AT(,,80,10),USE(Search),MSG('Enter Search Criteria')
  1278.      END
  1279.  
  1280. #LOCALDATA
  1281. Search      STRING(40)
  1282. #ENDLOCALDATA
  1283. #!
  1284. #!
  1285. #!
  1286. #!=============================================================================!
  1287. #!                                                                             !
  1288. #! Search Entry Field and Promp Control                                        !
  1289. #!                                                                             !
  1290. #!=============================================================================!
  1291. #CONTROL(SearchEntryAndPrompt,'Search Entry Field and Prompt'),MULTI
  1292.      CONTROLS
  1293.        PROMPT('Search:'),AT(,,25,10),USE(?Search:Prompt)
  1294.        ENTRY(@S40),AT(27,0,80,10),USE(Search),MSG('Enter Search Criteria')
  1295.      END
  1296.  
  1297. #LOCALDATA
  1298. Search      STRING(40)
  1299. #ENDLOCALDATA
  1300. #!
  1301. #!
  1302. #!
  1303. #!
  1304. #!=============================================================================!
  1305. #!                                                                             !
  1306. #! Change Order CW Tab Control                                                 !
  1307. #!                                                                             !
  1308. #!=============================================================================!
  1309. #CONTROL(OrderCWTab,'Change Order CW Tab Control'),MULTI
  1310.      CONTROLS
  1311.        SHEET,AT(,,110,60),USE(?ChangeOrder)
  1312.          TAB('Tab 1')
  1313.          END
  1314.        END
  1315.      END
  1316.  
  1317. #ATSTART
  1318.   #DECLARE(%CWTabChangeOrderControl)
  1319.   #FOR(%Control),WHERE(%ControlInstance = %ActiveTemplateInstance AND %ControlType = 'SHEET')
  1320.     #SET(%CWTabChangeOrderControl,%Control)
  1321.   #ENDFOR
  1322. #ENDAT
  1323. #!-------------------------------------------------------------------------
  1324. #AT(%DisableTabBeforeInLineUpdate,%CWTabChangeOrderControl)
  1325. DISABLE(%CWTabChangeOrderControl)                              #<!  Disable Change Order Control
  1326. #ENDAT
  1327. #!-------------------------------------------------------------------------
  1328. #AT(%EnableTabAfterInLineUpdate,%CWTabChangeOrderControl)
  1329. ENABLE(%CWTabChangeOrderControl)                               #<!  Enable Change Order Control
  1330. #ENDAT
  1331. #!-------------------------------------------------------------------------
  1332. #!
  1333. #!
  1334. #!=============================================================================!
  1335. #!                                                                             !
  1336. #! Change Order Drop Box Control                                               !
  1337. #!                                                                             !
  1338. #!=============================================================================!
  1339. #CONTROL(OrderDropBox,'Change Order Drop Box'),MULTI
  1340.      CONTROLS
  1341.        PROMPT('Sort By:'),AT(,,28,10),USE(?ChangeOrder:Prompt)
  1342.        LIST,AT(30,0,80,10),USE(?ChangeOrder),FORMAT('160L@s40@'),DROP(4),FROM(DropBoxOrderQ)
  1343.      END
  1344.  
  1345. #BOXED('Power Browse Settings')
  1346.   #BUTTON('Change Order Drop Box Options'),AT(10,11,180),HLP('~PBOrderDropBox')
  1347.     #PROMPT('&Item# to Select when Control is Initialized:',@N3),%DropBoxSelectItem,DEFAULT(1),PROMPTAT(10,,135),AT(150,,20)
  1348.   #ENDBUTTON
  1349. #ENDBOXED
  1350.  
  1351. #LOCALDATA
  1352. ChangeOrder  STRING(1)
  1353. #ENDLOCALDATA
  1354. #!
  1355. #ATSTART
  1356.   #DECLARE(%DropBoxChangeOrderControl)
  1357.   #FOR(%Control),WHERE(%ControlInstance = %ActiveTemplateInstance)
  1358.     #SET(%DropBoxChangeOrderControl,%Control)
  1359.   #ENDFOR
  1360.   #IF(NOT %DropBoxSelectItem)
  1361.     #SET(%DropBoxSelectItem,1)
  1362.   #ENDIF
  1363. #ENDAT
  1364. #!
  1365. #AT(%SetInitialSortOrder,%DropBoxChangeOrderControl),WHERE(%DropBoxSelectItem > 1)
  1366. %DropBoxSelectItem                                             #<!Default to Sort Order #%DropBoxSelectItem
  1367. #ENDAT
  1368. #!=============================================================================!
  1369. #!                                                                             !
  1370. #! Change Order Option Box Control                                             !
  1371. #!                                                                             !
  1372. #!=============================================================================!
  1373. #CONTROL(OrderOptBox,'Change Order Option Box'),MULTI
  1374.      CONTROLS
  1375.        OPTION('Sort By:'),AT(,,90,20),USE(?ChangeOrder),BOXED
  1376.        END
  1377.      END
  1378.  
  1379. #ATSTART
  1380.   #DECLARE(%OptBoxChangeOrderControl)
  1381.   #FOR(%Control),WHERE(%ControlInstance = %ActiveTemplateInstance)
  1382.     #SET(%OptBoxChangeOrderControl,%Control)
  1383.   #ENDFOR
  1384. #ENDAT
  1385. #!-------------------------------------------------------------------------
  1386. #AT(%DisableTabBeforeInLineUpdate,%OptBoxChangeOrderControl)
  1387. DISABLE(%OptBoxChangeOrderControl)                              #<!  Disable Change Order Control
  1388. #ENDAT
  1389. #!-------------------------------------------------------------------------
  1390. #AT(%EnableTabAfterInLineUpdate,%OptBoxChangeOrderControl)
  1391. ENABLE(%OptBoxChangeOrderControl)                               #<!  Enable Change Order Control
  1392. #ENDAT
  1393. #!-------------------------------------------------------------------------
  1394. #!
  1395. #!
  1396. #!
  1397. #!=============================================================================!
  1398. #!                                                                             !
  1399. #! Change Order SAXTab Control                                                 !
  1400. #!                                                                             !
  1401. #!=============================================================================!
  1402. #CONTROL(OrderSAXTab,'Change Order Using SAX Tab Control'),MULTI
  1403.      CONTROLS
  1404.        CUSTOM('Tab 0|Tab 1|Tab 2|Tab 3'),AT(,,100,15),USE(?ChangeOrder),CLASS('SAXTABS.VBX','SaxTab'), |
  1405.               'ActiveTabColor'('65280'),'BackColor'('12632256'),'InactiveTabColor'('8421504')
  1406.      END
  1407.  
  1408. #ATSTART
  1409.   #DECLARE(%SaxTabChangeOrderControl)
  1410.   #FOR(%Control),WHERE(%ControlInstance = %ActiveTemplateInstance)
  1411.     #SET(%SaxTabChangeOrderControl,%Control)
  1412.   #ENDFOR
  1413. #ENDAT
  1414. #!-------------------------------------------------------------------------
  1415. #AT(%DisableTabBeforeInLineUpdate,%SaxTabChangeOrderControl)
  1416. DISABLE(%SaxTabChangeOrderControl)                              #<!  Disable Tab Control
  1417. #ENDAT
  1418. #!-------------------------------------------------------------------------
  1419. #AT(%EnableTabAfterInLineUpdate,%SaxTabChangeOrderControl)
  1420. ENABLE(%SaxTabChangeOrderControl)                               #<!  Enable Tab Control
  1421. #ENDAT
  1422. #!-------------------------------------------------------------------------
  1423. #!
  1424. #!
  1425. #!
  1426. #!=============================================================================!
  1427. #!                                                                             !
  1428. #! Change Order FarPoint TAB/VBX Control                                       !
  1429. #!                                                                             !
  1430. #!=============================================================================!
  1431. #CONTROL(OrderTabVbx,'Change Order Using FarPoint TAB/VBX Control'),MULTI
  1432.      CONTROLS
  1433.        CUSTOM('TabVbx 1'),AT(,,100,15),USE(?ChangeOrder),CLASS('FPTAB11.VBX','TabCtl'),'Orientation'('2'),'TabSeparator'('4')
  1434.  
  1435.      END
  1436.  
  1437. #ATSTART
  1438.   #DECLARE(%TabVbxChangeOrderControl)
  1439.   #FOR(%Control),WHERE(%ControlInstance = %ActiveTemplateInstance)
  1440.     #SET(%TabVbxChangeOrderControl,%Control)
  1441.   #ENDFOR
  1442. #ENDAT
  1443. #!-------------------------------------------------------------------------
  1444. #AT(%DisableTabBeforeInLineUpdate,%TabVbxChangeOrderControl)
  1445. DISABLE(%TabVbxChangeOrderControl)                              #<!  Disable Tab Control
  1446. #ENDAT
  1447. #!-------------------------------------------------------------------------
  1448. #AT(%EnableTabAfterInLineUpdate,%TabVbxChangeOrderControl)
  1449. ENABLE(%TabVbxChangeOrderControl)                               #<!  Enable Tab Control
  1450. #ENDAT
  1451. #!-------------------------------------------------------------------------
  1452. #!
  1453. #!
  1454. #!
  1455. #!=============================================================================!
  1456. #!                                                                             !
  1457. #! Change Order FarPoint TAB/PRO Control                                       !
  1458. #!                                                                             !
  1459. #!=============================================================================!
  1460. #CONTROL(OrderTabPro,'Change Order Using FarPoint TAB/PRO Control'),MULTI
  1461.      CONTROLS
  1462.        CUSTOM('TabPro 1'),AT(,,100,15),USE(?ChangeOrder),CLASS('TABPRO11.VBX','fpVBTabPro11'),'Orientation'('2'),'TabSeparator'('4')
  1463.  
  1464.      END
  1465.  
  1466. #ATSTART
  1467.   #DECLARE(%TabProChangeOrderControl)
  1468.   #FOR(%Control),WHERE(%ControlInstance = %ActiveTemplateInstance)
  1469.     #SET(%TabProChangeOrderControl,%Control)
  1470.   #ENDFOR
  1471. #ENDAT
  1472. #!-------------------------------------------------------------------------
  1473. #AT(%DisableTabBeforeInLineUpdate,%TabProChangeOrderControl)
  1474. DISABLE(%TabProChangeOrderControl)                              #<!  Disable Tab Control
  1475. #ENDAT
  1476. #!-------------------------------------------------------------------------
  1477. #AT(%EnableTabAfterInLineUpdate,%TabProChangeOrderControl)
  1478. ENABLE(%TabProChangeOrderControl)                               #<!  Enable Tab Control
  1479. #ENDAT
  1480. #!-------------------------------------------------------------------------
  1481. #!
  1482. #!
  1483. #!
  1484. #!=============================================================================!
  1485. #!                                                                             !
  1486. #! Record Marking Buttons                                                      !
  1487. #!                                                                             !
  1488. #!=============================================================================!
  1489. #CONTROL(MarkButtons,'Record Marking Buttons'),REQ(BrowseBox(ToolCraft)),MULTI
  1490.      CONTROLS
  1491.        BUTTON('&Mark'),AT(,,40,10),USE(?Mark)
  1492.        BUTTON('&Unmark'),AT(42,0,40,10),USE(?Unmark)
  1493.        BUTTON('Mark &All'),AT(42,0,40,10),USE(?MarkAll)
  1494.        BUTTON('&Clear All'),AT(42,0,40,10),USE(?UnmarkAll)
  1495.      END
  1496.  
  1497. #BOXED('Power Browse Settings')
  1498.   #BUTTON('Record Marking Prompts'),AT(10,11,180),HLP('~PBMarkButtons')
  1499.     #PROMPT('Always Reselect List After a Mark Button is Pressed',CHECK),%AlwaysReselectList,DEFAULT(1),AT(10,10,180)
  1500.     #DISPLAY(''),AT(,15)
  1501.     #PROMPT('Enable Space and Shift+Space Keys for Marking',CHECK),%MarkWithSpaceBar,DEFAULT(0),AT(10,,180)
  1502.     #DISPLAY('(Note: Keys must be Alerted on the List Box Control)'),AT(20)
  1503.     #DISPLAY(''),AT(,40)
  1504.     #PROMPT('Don''t Disable Buttons when List Box is Empty',CHECK),%NoMarkButtonDisable,DEFAULT(0),AT(10,,180)
  1505.     #DISPLAY(''),AT(,55)
  1506.     #PROMPT('List Box Display Field:',FIELD),%MarkStatusField,DEFAULT('MarkStatus')
  1507.     #VALIDATE(%MarkStatusField,'You Must Select a List Box Display Field')
  1508.     #PROMPT('Queue Name to Use:',@S25),%MarkQueueName,DEFAULT('MarkQueue')
  1509.     #VALIDATE(%MarkQueueName,'You Must Enter a Queue Name')
  1510.     #PROMPT('All Records Marked Flag:',@S50),%MarkAllFlag,DEFAULT('MarkAllFlag')
  1511.     #VALIDATE(%MarkAllFlag,'You Must Enter a Marked Flag')
  1512.     #DISPLAY(''),AT(,95)
  1513.     #PROMPT('Marked Message:',@S25),%MarkedMessage,DEFAULT('X')
  1514.     #PROMPT('Not Marked Message:',@S25),%NotMarkedMessage
  1515.     #DISPLAY(''),at(,123)
  1516.     #PROMPT('Point Bar Movement:',DROP('None|Next|Previous')),%GotoAfterMark,DEFAULT('None')
  1517.   #ENDBUTTON
  1518. #ENDBOXED
  1519. #LOCALDATA
  1520. MarkStatus   STRING(15)
  1521. #ENDLOCALDATA
  1522. #ATSTART
  1523.   #DECLARE(%MarkListControl)
  1524.   #DECLARE(%MarkListQueue)
  1525.   #DECLARE(%MarkBrwNum)
  1526.   #DECLARE(%MarkBrwPfx)
  1527.   #DECLARE(%MrkPfx)
  1528.   #DECLARE(%PrimaryKeyField)
  1529.   #DECLARE(%PrimaryKeyPfxAndField)
  1530.   #DECLARE(%PrimaryKeyBrwField)
  1531.   #DECLARE(%MarkControl)
  1532.   #DECLARE(%MarkKey)
  1533.   #DECLARE(%UnmarkControl)
  1534.   #DECLARE(%UnmarkKey)
  1535.   #DECLARE(%MarkAllControl)
  1536.   #DECLARE(%MarkAllKey)
  1537.   #DECLARE(%UnmarkAllControl)
  1538.   #DECLARE(%UnmarkAllKey)
  1539.   #FOR(%Control),WHERE(%ControlInstance = %ActiveTemplateInstance)
  1540.     #CASE(%ControlOriginal)
  1541.     #OF('?Mark')
  1542.       #SET(%MarkControl,%Control)
  1543.       #IF(%AlwaysReselectList)
  1544.         #CLEAR(%MarkKey)
  1545.       #ELSE
  1546.         #SET(%MarkKey,EXTRACT(%ControlStatement,'KEY'))
  1547.         #SET(%MarkKey,SUB(%MarkKey,5,LEN(%MarkKey) - 5))
  1548.         #IF(NOT %MarkKey)
  1549.           #SET(%MarkKey,EXTRACT(%ControlStatement,'BUTTON'))
  1550.           #SET(%MarkKey,SUB(%MarkKey,9,LEN(%MarkKey) - 10))
  1551.           #SET(%ValueConstruct,INSTRING('&',%MarkKey))
  1552.           #IF(%ValueConstruct)
  1553.             #SET(%MarkKey,'Alt' & UPPER(SUB(%MarkKey,%ValueConstruct+1,1)))
  1554.           #ELSE
  1555.             #CLEAR(%MarkKey)
  1556.           #END
  1557.         #ENDIF
  1558.       #ENDIF
  1559.     #OF('?Unmark')
  1560.       #SET(%UnmarkControl,%Control)
  1561.       #IF(%AlwaysReselectList)
  1562.         #CLEAR(%UnmarkKey)
  1563.       #ELSE
  1564.         #SET(%UnmarkKey,EXTRACT(%ControlStatement,'KEY'))
  1565.         #SET(%UnmarkKey,SUB(%UnmarkKey,5,LEN(%UnmarkKey) - 5))
  1566.         #IF(NOT %UnmarkKey)
  1567.           #SET(%UnmarkKey,EXTRACT(%ControlStatement,'BUTTON'))
  1568.           #SET(%UnmarkKey,SUB(%UnmarkKey,9,LEN(%UnmarkKey) - 10))
  1569.           #SET(%ValueConstruct,INSTRING('&',%UnmarkKey))
  1570.           #IF(%ValueConstruct)
  1571.             #SET(%UnmarkKey,'Alt' & UPPER(SUB(%UnmarkKey,%ValueConstruct+1,1)))
  1572.           #ELSE
  1573.             #CLEAR(%UnmarkKey)
  1574.           #END
  1575.         #ENDIF
  1576.       #ENDIF
  1577.     #OF('?MarkAll')
  1578.       #SET(%MarkAllControl,%Control)
  1579.       #IF(%AlwaysReselectList)
  1580.         #CLEAR(%MarkAllKey)
  1581.       #ELSE
  1582.         #SET(%MarkAllKey,EXTRACT(%ControlStatement,'KEY'))
  1583.         #SET(%MarkAllKey,SUB(%MarkAllKey,5,LEN(%MarkAllKey) - 5))
  1584.         #IF(NOT %MarkAllKey)
  1585.           #SET(%MarkAllKey,EXTRACT(%ControlStatement,'BUTTON'))
  1586.           #SET(%MarkAllKey,SUB(%MarkAllKey,9,LEN(%MarkAllKey) - 10))
  1587.           #SET(%ValueConstruct,INSTRING('&',%MarkAllKey))
  1588.           #IF(%ValueConstruct)
  1589.             #SET(%MarkAllKey,'Alt' & UPPER(SUB(%MarkAllKey,%ValueConstruct+1,1)))
  1590.           #ELSE
  1591.             #CLEAR(%MarkAllKey)
  1592.           #END
  1593.         #ENDIF
  1594.       #ENDIF
  1595.     #OF('?UnmarkAll')
  1596.       #SET(%UnmarkAllControl,%Control)
  1597.       #IF(%AlwaysReselectList)
  1598.         #CLEAR(%UnmarkAllKey)
  1599.       #ELSE
  1600.         #SET(%UnmarkAllKey,EXTRACT(%ControlStatement,'KEY'))
  1601.         #SET(%UnmarkAllKey,SUB(%UnmarkKey,5,LEN(%UnmarkAllKey) - 5))
  1602.         #IF(NOT %UnmarkAllKey)
  1603.           #SET(%UnmarkAllKey,EXTRACT(%ControlStatement,'BUTTON'))
  1604.           #SET(%UnmarkAllKey,SUB(%UnmarkAllKey,9,LEN(%UnmarkAllKey) - 10))
  1605.           #SET(%ValueConstruct,INSTRING('&',%UnmarkAllKey))
  1606.           #IF(%ValueConstruct)
  1607.             #SET(%UnmarkAllKey,'Alt' & UPPER(SUB(%UnmarkAllKey,%ValueConstruct+1,1)))
  1608.           #ELSE
  1609.             #CLEAR(%UnmarkAllKey)
  1610.           #END
  1611.         #ENDIF
  1612.       #ENDIF
  1613.     #ENDCASE
  1614.   #ENDFOR
  1615.   #CLEAR(%PrimaryKeyField)
  1616.   #FIX(%File,%Primary)
  1617.   #FIX(%Key,%FilePrimaryKey)
  1618.   #FOR(%KeyField)
  1619.     #SET(%PrimaryKeyField,SUB(%KeyField,INSTRING(':',%KeyField) + 1,LEN(%KeyField)))
  1620.     #SET(%PrimaryKeyPfxAndField,%KeyField)
  1621.     #SET(%PrimaryKeyBrwField,%KeyField)
  1622.   #END
  1623.   #IF(NOT %PrimaryKeyField)
  1624.     #ERROR('ERROR#006:' & %Procedure & '-Record Marking Requires a Primary Key')
  1625.   #END
  1626.   #FOR(%Control),WHERE(%ControlInstance = %ActiveTemplateParentInstance)
  1627.     #SET(%MarkListControl,%Control)
  1628.     #SET(%MarkListQueue,%ControlFrom)
  1629.     #SET(%MarkBrwNum,%ControlInstance)
  1630.     #SET(%MarkBrwPfx,%ControlFrom)
  1631.     #SET(%PrimaryKeyBrwField,%MarkBrwPfx & ':' & %PrimaryKeyBrwField)
  1632.   #ENDFOR
  1633.   #CLEAR(%ValueConstruct)
  1634.   #FOR(%Control)
  1635.     #IF(%ControlTemplate = 'BrowseBox(ToolCraft)')
  1636.       #SET(%ValueConstruct,%ValueConstruct + 1)
  1637.     #ENDIF
  1638.   #ENDFOR
  1639.   #IF(%MarkBrwNum = 1 AND %ValueConstruct = 1)
  1640.     #CLEAR(%MarkBrwNum)
  1641.   #END
  1642.   #SET(%MrkPfx,'MQ' & %MarkBrwNum)
  1643. #ENDAT
  1644. #!------------------------------------------------------------------------
  1645. #AT(%EnableSaveButtons,%MarkListControl),WHERE(NOT %NoMarkButtonDisable)
  1646.   #FOR(%Control),WHERE(%Control=%MarkControl AND NOT EXTRACT(%ControlStatement,'DISABLE'))
  1647. ENABLE(%MarkControl)                                                #<!    Enable the Mark Button
  1648. ENABLE(%UnmarkControl)                                              #<!    Enable the Unmark Button
  1649. ENABLE(%MarkAllControl)                                             #<!    Enable the Mark All Button
  1650. ENABLE(%UnmarkAllControl)                                           #<!    Enable the Unmark All Button
  1651.   #ENDFOR
  1652. #ENDAT
  1653. #!------------------------------------------------------------------------
  1654. #AT(%DisableSaveButtons,%MarkListControl),WHERE(NOT %NoMarkButtonDisable)
  1655.   #FOR(%Control),WHERE(%Control=%MarkControl AND NOT EXTRACT(%ControlStatement,'DISABLE'))
  1656. DISABLE(%MarkControl)                                               #<!    Disable the Mark Button
  1657. DISABLE(%UnmarkControl)                                             #<!    Disable the Unmark Button
  1658. DISABLE(%MarkAllControl)                                            #<!    Disable the Mark All Button
  1659. DISABLE(%UnmarkAllControl)                                          #<!    Disable the Unmark All Button
  1660.   #ENDFOR
  1661. #ENDAT
  1662. #!------------------------------------------------------------------------
  1663. #AT(%MultiSortOrderDeclarations)
  1664.   #IF(NOT %UsingRecordMarking)
  1665.     #INSERT(%AddPrimaryKeyFieldToQueue)
  1666.     #SET(%UsingRecordMarking,1)
  1667. %[20]MarkAllFlag BYTE                                               #<!Flag Indicating All Records Marked
  1668. %[20]MarkQueueName QUEUE,PRE(%MrkPfx)                               #<!Queue Used to Store Marked Records
  1669. %[22]PrimaryKeyField LIKE(%PrimaryKeyPfxAndField),NAME('TC_MarkKey')#<!  Unique Record Id for the File
  1670. %[20]Null END                                                       #<!End Queue Declaration
  1671.  
  1672.   #ENDIF
  1673. #ENDAT
  1674. #!------------------------------------------------------------------------
  1675. #AT(%ControlEventHandling,%MarkListControl,'AlertKey')
  1676.   #IF(%MarkWithSpaceBar)
  1677. CASE KEYCODE()                                                      #<!Process Alert Keys for Marking
  1678. OF SpaceKey                                                         #<!  On Mark/Unmark Key
  1679.   GET(%MarkListQueue,CHOICE(%MarkListControl))                      #<!    Reget Current Record ID
  1680.   %MrkPfx:%PrimaryKeyField = %PrimaryKeyBrwField                    #<!    Prepare to Search for Marked Record
  1681.   GET(%MarkQueueName,%MrkPfx:%PrimaryKeyField)                      #<!    See if Record is Marked
  1682.   IF (ERROR() AND NOT %MarkAllFlag) OR |                            #<!
  1683.      (NOT ERROR() AND %MarkAllFlag)                                 #<!    IF Record is Not Marked
  1684.     POST(EVENT:Accepted,%MarkControl)                               #<!      Mark the Record
  1685.   ELSE                                                              #<!    Otherwise
  1686.     POST(EVENT:Accepted,%UnMarkControl)                             #<!      Unmark the Record
  1687.   END                                                               #<!    End If
  1688.   CYCLE                                                             #<!    Cycle to Top of Event Loop
  1689. OF ShiftSpace                                                       #<!  On MarkAll/UnMarkAll Key
  1690.   IF NOT %MarkAllFlag                                               #<!    If Not All Records Marked Before
  1691.     POST(EVENT:Accepted,%MarkAllControl)                            #<!      Mark All Records
  1692.   ELSE                                                              #<!    Otherwise
  1693.     POST(EVENT:Accepted,%UnMarkAllControl)                          #<!      Unmark All Records
  1694.   END                                                               #<!    End If
  1695.   CYCLE                                                             #<!    Cycle to Top of Event Loop
  1696. END                                                                 #<!End Case
  1697.   #ENDIF
  1698. #ENDAT
  1699. #!------------------------------------------------------------------------
  1700. #AT(%ControlEventHandling,%MarkControl,'Accepted')
  1701. GET(%MarkListQueue,CHOICE(%MarkListControl))                        #<!Reget Current Record ID
  1702. %MrkPfx:%PrimaryKeyField = %PrimaryKeyBrwField                      #<!Prepare to Search for Marked Record
  1703. GET(%MarkQueueName,%MrkPfx:%PrimaryKeyField)                        #<!See if Record is Marked
  1704. IF NOT %MarkAllFlag                                                 #<!If Not Marking All Exceptions
  1705.   IF ERROR()                                                        #<!  If Record Not Marked
  1706.     %MarkBrwPfx:%MarkStatusField = '%MarkedMessage'                 #<!    Show Record as Marked in the List Box
  1707.     %MrkPfx:%PrimaryKeyField = %PrimaryKeyBrwField                  #<!    Set up to Add Record to the Mark Queue
  1708.     ADD(%MarkQueueName,%MrkPfx:%PrimaryKeyField)                    #<!    Add the Record to the Mark Queue
  1709.     PUT(%MarkListQueue)                                             #<!    Update the Changes to the List Box
  1710.   END                                                               #<!  End If
  1711. ELSE                                                                #<!Otherwise Mark Table is an Exception List
  1712.   IF NOT ERROR()                                                    #<!  If Record Not Marked
  1713.     %MarkBrwPfx:%MarkStatusField = '%MarkedMessage'                 #<!    Show Record as Marked in the List Box
  1714.     DELETE(%MarkQueueName)                                          #<!    Delete the Record from the Mark Queue
  1715.     PUT(%MarkListQueue)                                             #<!    Update the Changes to the List Box
  1716.   END                                                               #<!  End If
  1717. END                                                                 #<!End If
  1718.   #CASE(%GotoAfterMark)
  1719.   #OF('Next')
  1720. POST(EVENT:ScrollDown,%MarkListControl)                             #<!Go Back to List and Move Down 1 Record
  1721.   #OF('Previous')
  1722. POST(EVENT:ScrollUp,%MarkListControl)                               #<!Go Back to List and Move Up 1 Record
  1723.   #ELSE
  1724.     #IF(%AlwaysReselectList)
  1725. SELECT(%MarkListControl)                                            #<!Go Back to List Box After Button Press
  1726.     #ELSE
  1727.       #IF(%MarkKey)
  1728. IF KEYCODE() = %MarkKey THEN SELECT(%MarkListControl).              #<!Reselect List When Called by Hot Key
  1729.       #ENDIF
  1730.     #ENDIF
  1731.   #ENDCASE
  1732. #ENDAT
  1733. #!------------------------------------------------------------------------
  1734. #AT(%ControlEventHandling,%UnmarkControl,'Accepted')
  1735. GET(%MarkListQueue,CHOICE(%MarkListControl))                        #<!Reget Current Record ID
  1736. %MrkPfx:%PrimaryKeyField = %PrimaryKeyBrwField                      #<!Prepare to Search for Marked Record
  1737. GET(%MarkQueueName,%MrkPfx:%PrimaryKeyField)                        #<!See if Record is Marked
  1738. IF NOT %MarkAllFlag                                                 #<!If Not Marking All Exceptions
  1739.   IF NOT ERROR()                                                    #<!  If Record is Marked
  1740.     %MarkBrwPfx:%MarkStatusField = '%NotMarkedMessage'              #<!    Show Record as Not Marked in the List Box
  1741.     DELETE(%MarkQueueName)                                          #<!    Delete the Record from the Mark Queue
  1742.     PUT(%MarkListQueue)                                             #<!    Update the Changes to the List Box
  1743.   END                                                               #<!  End If
  1744. ELSE                                                                #<!Otherwise Mark Table is an Exception List
  1745.   IF ERROR()                                                        #<!  If Record is Marked
  1746.     %MarkBrwPfx:%MarkStatusField = '%NotMarkedMessage'              #<!    Show Record as Not Marked in the List Box
  1747.     %MrkPfx:%PrimaryKeyField = %PrimaryKeyBrwField                  #<!    Set up to Add Record to the Mark Queue
  1748.     ADD(%MarkQueueName,%MrkPfx:%PrimaryKeyField)                    #<!    Add the Record to the Mark Queue
  1749.     PUT(%MarkListQueue)                                             #<!    Update the Changes to the List Box
  1750.   END                                                               #<!  End If
  1751. END                                                                 #<!End If
  1752.   #CASE(%GotoAfterMark)
  1753.   #OF('Next')
  1754. POST(EVENT:ScrollDown,%MarkListControl)                             #<!Go Back to List and Move Down 1 Record
  1755.   #OF('Previous')
  1756. POST(EVENT:ScrollUp,%MarkListControl)                               #<!Go Back to List and Move Up 1 Record
  1757.   #ELSE
  1758.     #IF(%AlwaysReselectList)
  1759. SELECT(%MarkListControl)                                            #<!Go Back to List Box After Button Press
  1760.     #ELSE
  1761.       #IF(%UnmarkKey)
  1762. IF KEYCODE() = %UnmarkKey THEN SELECT(%MarkListControl).            #<!Reselect List When Called by Hot Key
  1763.       #ENDIF
  1764.     #ENDIF
  1765.   #ENDCASE
  1766. #ENDAT
  1767. #!------------------------------------------------------------------------
  1768. #AT(%ControlEventHandling,%MarkAllControl,'Accepted')
  1769. %MarkAllFlag = 1                                                    #<!Mark Queue is Now an Exception List
  1770. FREE(%MarkQueueName)                                                #<!Mark All Records
  1771. LOOP Rec%# = 1 TO RECORDS(%MarkListQueue)                           #<!Loop Through the List Boxes Records
  1772.   GET(%MarkListQueue,Rec%#)                                         #<!  Read the Queue Record
  1773.   %MarkBrwPfx:%MarkStatusField = '%MarkedMessage'                   #<!  Show Record as Marked in the List Box
  1774.   PUT(%MarkListQueue)                                               #<!  Update the Changes to the List Box
  1775. END                                                                 #<!End Loop
  1776. #IF(%AlwaysReselectList)                                   
  1777. SELECT(%MarkListControl)                                            #<!Go Back to List Box After Button Press
  1778. #ELSE
  1779.   #IF(%MarkAllKey)
  1780. IF KEYCODE() = %MarkAllKey THEN SELECT(%MarkListControl).           #<!Reselect List When Called by Hot Key
  1781.   #ENDIF
  1782. #ENDIF
  1783. #ENDAT
  1784. #!------------------------------------------------------------------------
  1785. #AT(%ControlEventHandling,%UnmarkAllControl,'Accepted')
  1786. %MarkAllFlag = 0                                                    #<!Mark Queue is Now a List of Marked Records
  1787. FREE(%MarkQueueName)                                                #<!UnMark All Records
  1788. LOOP Rec%# = 1 TO RECORDS(%MarkListQueue)                           #<!Loop Through the List Boxes Records
  1789.   GET(%MarkListQueue,Rec%#)                                         #<!  Read the Queue Record
  1790.   %MarkBrwPfx:%MarkStatusField = '%NotMarkedMessage'                #<!  Show Record as Not Marked in the List Box
  1791.   PUT(%MarkListQueue)                                               #<!  Update the Changes to the List Box
  1792. END                                                                 #<!End Loop
  1793. #IF(%AlwaysReselectList)                                   
  1794. SELECT(%MarkListControl)                                            #<!Go Back to List Box After Button Press
  1795. #ELSE
  1796.   #IF(%UnmarkAllKey)
  1797. IF KEYCODE() = %UnmarkAllKey THEN SELECT(%MarkListControl).         #<!Reselect List When Called by Hot Key
  1798.   #ENDIF
  1799. #ENDIF
  1800. #ENDAT
  1801. #!------------------------------------------------------------------------
  1802. #AT(%MarkerFillQueueCode)
  1803. %MrkPfx:%PrimaryKeyField = %PrimaryKeyPfxAndField                   #<!  Prepare to Search for Marked Record
  1804. GET(%MarkQueueName,%MrkPfx:%PrimaryKeyField)                        #<!  See if Record is Marked
  1805. IF (NOT %MarkAllFlag AND NOT ERROR()) OR |                          #<!  If Record is Marked
  1806.     (%MarkAllFlag AND ERROR())                                      #<!
  1807.   %MarkStatusField = '%MarkedMessage'                               #<!    Show Record as Marked
  1808. ELSE                                                                #<!  Otherwise
  1809.   %MarkStatusField = '%NotMarkedMessage'                            #<!    Show Record as Not Marked
  1810. END                                                                 #<!  End If
  1811. #ENDAT
  1812. #!------------------------------------------------------------------------
  1813. #AT(%EndOfProcedure)
  1814. FREE(%MarkQueueName)                                                #<!Release Memory use by Mark Records Queue
  1815. #ENDAT
  1816. #!------------------------------------------------------------------------
  1817. #!
  1818. #!
  1819. #!
  1820. #!=============================================================================!
  1821. #!                                                                             !
  1822. #! Marked Record Processing                                                    !
  1823. #!                                                                             !
  1824. #!=============================================================================!
  1825. #EXTENSION(MarkedRecordProcessing,'Process Only Marked Records'),PROCEDURE,REQ(PowerBrowseLibrary(ToolCraft)),HLP('~PBMarkedRecordProcessingExtension')
  1826. #!
  1827. #ATSTART
  1828. #DECLARE(%ProcessMarkedKeyField)
  1829. #CLEAR(%ProcessMarkedKeyField)
  1830. #FIX(%File,%Primary)
  1831. #FOR(%Key),WHERE(%KeyPrimary)
  1832.   #FOR(%KeyField)
  1833.     #SET(%ProcessMarkedKeyField,%KeyField)
  1834.   #ENDFOR
  1835. #ENDFOR
  1836. #ENDAT
  1837. #!------------------------------------------------------------------------
  1838. #AT(%DeclarationSection),WHERE(%ProcessMarkedKeyField)
  1839. ProcessMarked        BYTE
  1840. MarkAllFlag          BYTE
  1841. PMQ                  &QUEUE
  1842. PMQ:Record           GROUP,PRE()
  1843. PMQ:%[18]ProcessMarkedKeyField LIKE(%ProcessMarkedKeyField)
  1844.                      END
  1845. #ENDAT
  1846. #!------------------------------------------------------------------------
  1847. #AT(%ProcedureSetup),WHERE(%ProcessMarkedKeyField)
  1848. ProcessMarked = TC:BRW:ProcessMarked
  1849. IF ProcessMarked
  1850.   PMQ &= TC:BRW:MarkQueue
  1851.   MarkAllFlag = TC:BRW:MarkAllFlag
  1852. END
  1853. CLEAR(TC:BRW:ProcessMarked)
  1854. CLEAR(TC:BRW:MarkAllFlag)
  1855. #ENDAT
  1856. #!------------------------------------------------------------------------
  1857. #AT(%RecordOutOfRange),WHERE(%ProcessMarkedKeyField)
  1858. IF ProcessMarked
  1859.   PMQ:%ProcessMarkedKeyField = %ProcessMarkedKeyField
  1860.   PMQ = PMQ:Record
  1861.   GET(PMQ,'TC_MarkKey')
  1862.   IF (MarkAllFlag AND NOT ERROR()) OR |
  1863.      (NOT MarkAllFlag AND ERROR())
  1864.     RecordStatus = Record:Filtered
  1865.     EXIT
  1866.   END
  1867. END
  1868. #ENDAT
  1869. #!------------------------------------------------------------------------
  1870. #!
  1871. #!
  1872. #!=============================================================================!
  1873. #!                                                                             !
  1874. #! Call Mark Queue for Marked Record Processing                                !
  1875. #!                                                                             !
  1876. #!=============================================================================!
  1877. #CODE(CallMarkedRecordProcessing,'Setup to Call Marked Record Processing'),PROCEDURE,REQ(PowerBrowseLibrary(ToolCraft)),HLP('~PBCallMarkedRecordsProcessingCode')
  1878. #!
  1879.   #PROMPT('Mark Queue Name:',@S25),%CallMarkQueueName,DEFAULT('MarkQueue')
  1880.   #VALIDATE(%CallMarkQueueName,'You Must Enter a Queue Name')
  1881.   #PROMPT('Mark All Flag Name:',@S50),%CallMarkAllFlag,DEFAULT('MarkAllFlag')
  1882.   #VALIDATE(%CallMarkAllFlag,'You Must Enter a Mark All Flag Name')
  1883. #!
  1884. #!------------------------------------------------------------------------
  1885. IF RECORDS(%CallMarkQueueName)
  1886.   TC:BRW:ProcessMarked = True
  1887.   TC:BRW:MarkQueue &= %CallMarkQueueName
  1888.   TC:BRW:MarkAllFlag = %CallMarkAllFlag
  1889. ELSE
  1890.   TC:BRW:ProcessMarked = False
  1891. END
  1892.